在Swift 3中,我想从字符串数组创建一个匹配字符串数组(不区分大小写): -
我正在使用此代码,但它区分大小写,
let filteredArray = self.arrCountry.filter { $0.contains("india") }
我怎么能这样做.. 假设我有一个名为arrCountry的主字符串数组,我想创建其中包含" india"(不区分大小写)的所有字符串的其他数组。
任何人都可以帮助我。
答案 0 :(得分:54)
您可以尝试使用localizedCaseInsensitiveContains
let filteredArray = self.arrCountry.filter { $0.localizedCaseInsensitiveContains("india") }
答案 1 :(得分:10)
<强> localizedCaseInsensitiveContains 强>
返回一个布尔值,表示 给定字符串是否为非空且包含在此字符串中 通过不区分大小写,非文字搜索,考虑到 当前的语言环境。与区域设置无关的不区分大小写操作,以及 其他需求,可以通过电话来实现 范围(的:选择:范围:区域设置:)。相当于:range(of:other,options:.caseInsensitiveSearch, locale:Locale.current)!= nil
使用
更好.filter { $0.range(of: "india", options: .caseInsensitive) != nil }
答案 2 :(得分:2)
即使我把中文或阿拉伯文放在下面,测试代码仍然返回TRUE
let text = "total sdfs"
let text1 = "Total 张"
let text2 = "TOTAL لطيف"
let text3 = "total :"
let text4 = "ToTaL : "
text.lowercased().contains("total")
text1.lowercased().contains("张")
text2.lowercased().contains("لطيف")
text3.lowercased().contains("total")
text4.lowercased().contains("total")
text.localizedCaseInsensitiveContains("total")
text1.localizedCaseInsensitiveContains("张")
text2.localizedCaseInsensitiveContains("لطيف")
text3.localizedCaseInsensitiveContains("total")
text4.localizedCaseInsensitiveContains("total")
答案 3 :(得分:0)
最简单的方法可能是小写字符串并进行比较:
Swift 3及以上
let filteredArray = self.arrCountry.filter { $0.lowercased() == "india" }
答案 4 :(得分:0)
我使用过滤时的 2 美分(例如对于 SwiftUI 中的列表。 如果您正在过滤,则空字符串返回 false:
let filterString = ""
let s = "HELLO"
let f = s.localizedCaseInsensitiveContains(filterString)
print(f)
例如:
....
private let people = ["Finn", "Leia", "Luke", "Rey"]
func getList(filterString: String)->[String]{
if filterString.isEmpty{
return people
}
let result = people.filter({ (p: String) -> Bool in
print(p)
let f = p.localizedCaseInsensitiveContains(filterString)
return f
})
return result
}