case insensitive matching search in string array s

2020-03-08 09:44发布

In Swift 3, I want to create an array of matching string (case insensitive) from string array:-

I am using this code, but it is case sensitive,

let filteredArray = self.arrCountry.filter { $0.contains("india") }

how can I do this.. suppose I have a master string array called arrCountry, I want to create other array of all the string who has "india"(case insensitive) in it.

Can anyone help me out.

标签: ios swift swift3
4条回答
干净又极端
2楼-- · 2020-03-08 09:46

localizedCaseInsensitiveContains
Returns a Boolean value indicating whether the given string is non-empty and contained within this string by case-insensitive, non-literal search, taking into account the current locale. Locale-independent case-insensitive operation, and other needs, can be achieved by calling range(of:options:range:locale:).

Equivalent to: range(of: other, options: .caseInsensitiveSearch, locale: Locale.current) != nil

It's better to use

.filter { $0.range(of: "india", options: .caseInsensitive) != nil }
查看更多
forever°为你锁心
3楼-- · 2020-03-08 09:47

Answer 2020:

Even I put Chinese or Arabic, below test codes still returns 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")
查看更多
Emotional °昔
4楼-- · 2020-03-08 09:50

The easiest way might be to lowercase your strings and compare:

Swift 3 and above

let filteredArray = self.arrCountry.filter { $0.lowercased() == "india" }
查看更多
疯言疯语
5楼-- · 2020-03-08 10:06

You can try with localizedCaseInsensitiveContains

let filteredArray = self.arrCountry.filter { $0.localizedCaseInsensitiveContains("india") }
查看更多
登录 后发表回答