2016-04-28 29 views
1

基本上,我想製作一個程序,如果您開始輸入名稱,應用程序將從數據庫中識別出它,併爲您填寫名稱。爲此,如果某人在完成名稱後輸入逗號,則該應用程序將開始記錄下一個名字。如果它與數據庫中某個名稱的子字符串相匹配,則會爲用戶填充它。問題是我需要在textField字符串中最後一次出現逗號字符之後才知道名稱的哪部分已被填充,但我不知道如何。例如: 用戶類型:「Daniel,Joh」 該應用程序爲您填寫John。謝謝。如何獲取字符串中最後一次出現字符後的子串:Swift IOS

回答

2

如果你真的想在最後一個逗號後面的字符,你可以使用正則表達式:

let string = "Hamilton, A" 
let regex = try! NSRegularExpression(pattern: ",\\s*(\\S[^,]*)$") 
if let match = regex.firstMatch(in: string, range: string.nsRange), let result = string[match.range(at: 1)] { 
    // use `result` here 
} 

凡在雨燕4:

extension String { 

    /// An `NSRange` that represents the full range of the string. 

    var nsRange: NSRange { 
     return NSRange(startIndex ..< endIndex, in: self) 
    } 

    /// Substring from `NSRange` 
    /// 
    /// - Parameter nsRange: `NSRange` within `utf16`. 
    /// - Returns: Substring with the given `NSRange`, or `nil` if the range can't be converted. 

    subscript(nsRange: NSRange) -> Substring? { 
     guard let range = Range(nsRange, in: self) else { return nil } 

     return self[range] 
    } 
} 
+0

是否正則表達式的解決方案也行,如果有名單上有兩個以上的名字? – user3798602

+0

對不起,我只是問,因爲它說firstMatchInString不是最後一個。謝謝 – user3798602

+0

好的,我明白了這個混亂。但是,如果你看看我的正則表達式字符串,最後一個字符是'$',它表示「匹配字符串的末尾」。因此,你只會得到一個匹配,最後一個匹配(如果有的話)。我只使用'firstMatchInString',因爲由於我們只獲得最後一個,所以不需要枚舉,只需要在字符串末尾抓住「first」匹配。 – Rob

相關問題