使用不区分大小写的

时间:2016-01-12 17:20:54

标签: arrays swift swift2

我有应用程序存储来自服务器的字符串值。然后我使用SearchView写入可以在List中的字符串。它必须不区分大小写。到目前为止,我有这个。但这不是我想要的魔力。

if (myListTags as NSArray).containsObject(searchBar.text!) {
            print("FOUND")
            getCategoryPick()
}

我试图加入caseInsensitiveCompare,但我失败了。对我有什么帮助? 如果该代码能够理解捷克语中的字母相似性,那将是完美的。(č= c,ž= z,í= i ......)

2 个答案:

答案 0 :(得分:7)

“č”是Unicode字符“LATIN SMALL LETTER C WITH CARON”。 它可以分解为“c”+“”,后者(“CARON”)是所谓的“变音符号”。

在比较字符串时忽略变音符号(这样 “č”=“c”),使用.DiacriticInsensitiveSearch选项:

let list = ["č", "ž"]
let search = "C"

if (list.contains {
    $0.compare(search, options: [.DiacriticInsensitiveSearch, .CaseInsensitiveSearch]) == .OrderedSame
    }) {
        print("Found")
} 

或者,如果要查找匹配的子字符串:

if (list.contains {
    $0.rangeOfString(search, options: [.DiacriticInsensitiveSearch, .CaseInsensitiveSearch]) != nil
    }) {
        print("Found")
} 

答案 1 :(得分:3)

您可以使用localizedCaseInsensitiveCompare()

{{1}}