Swift: How to get everything after a certain set of characters

后端 未结 4 1098
遇见更好的自我
遇见更好的自我 2020-12-25 11:03

Given the following string:

var snippet = \"1111 West Main Street Beverly Hills, CA 90210 Phone: 123.456.7891\"

How can I extract everythin

相关标签:
4条回答
  • 2020-12-25 11:38

    Just use func substringFromIndex but increase the index by the length of "Phone:"

    0 讨论(0)
  • 2020-12-25 11:51

    In Swift 4, use upperBound and subscript operators and open range:

    let snippet = "1111 West Main Street Beverly Hills, CA 90210 Phone: 123.456.7891"
    
    if let range = snippet.range(of: "Phone: ") {
        let phone = snippet[range.upperBound...]
        print(phone) // prints "123.456.7891"
    }
    

    Or consider trimming the whitespace:

    if let range = snippet.range(of: "Phone:") {
        let phone = snippet[range.upperBound...].trimmingCharacters(in: .whitespaces)
        print(phone) // prints "123.456.7891"
    }
    

    By the way, if you're trying to grab both at the same time, a regular expression can do that:

    let snippet = "1111 West Main Street Beverly Hills, CA 90210 Phone: 123.456.7891"
    let regex = try! NSRegularExpression(pattern: #"^(.*?)\s*Phone:\s*(.*)$"#, options: .caseInsensitive)
    if let match = regex.firstMatch(in: snippet, range: NSRange(snippet.startIndex..., in: snippet)) {
        let address = snippet[Range(match.range(at: 1), in: snippet)!]
        let phone = snippet[Range(match.range(at: 2), in: snippet)!]
    }
    

    For prior versions of Swift, see previous revision of this answer.

    0 讨论(0)
  • 2020-12-25 11:59

    for a very basic way and assuming you can guarantee the format of the string you could use .components(separatedBy: "Phone: ") so anything before will be at index 0 and after index 1

    var snippet = "1111 West Main Street Beverly Hills, CA 90210 Phone: 123.456.7891"
    let phoneNumber = snippet.components(separatedBy: "Phone: ")[1]
    print(phoneNumber)
    //prints everything that appears after "Phone: " in your snippet string
    //"123.456.7891"
    
    0 讨论(0)
  • 2020-12-25 11:59

    Check it this

    let delimiter = ", "
    let newstr = "Hello, playground"
    let token = newstr.components(separatedBy: delimiter)
    let first = token[0]
    let last = token[1]
    print("\(first) \(last)")
    
    0 讨论(0)
提交回复
热议问题