ios 字符串数组swift 3中的不区分大小写的匹配搜索

ars1skjm  于 2023-03-05  发布在  iOS
关注(0)|答案(6)|浏览(248)

在Swift 3中,我想从字符串数组创建匹配字符串的数组(不区分大小写):-
我使用的是这个代码,但是它区分大小写,

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

假设我有一个名为arrCountry的主字符串数组,我想创建一个包含所有包含“india”(不区分大小写)的字符串的数组。
有谁能帮帮我。

rm5edbpk

rm5edbpk1#

您可以尝试使用localizedCaseInsensitiveContains

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

b4qexyjb2#

    • 本地化大小写不敏感包含**

返回一个布尔值,该值指示给定字符串是否为非空,以及是否通过不区分大小写的非文本搜索包含在此字符串中,同时考虑当前区域设置。可以通过调用range(of:options:range:locale:)来实现不区分区域设置的大小写操作和其他需要。
等同于:范围(属于:其他,选项:. case不敏感搜索,区域设置:区域设置.当前)!= nil
还是用

.filter { $0.range(of: "india", options: .caseInsensitive) != nil }
gjmwrych

gjmwrych3#

最简单的方法可能是将字符串小写并进行比较:

Swift 3及以上

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

x6492ojm4#

答案2020:

即使我把中文或阿拉伯文,下面的测试代码仍然返回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")
x759pob2

x759pob25#

我的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
    }
u1ehiz5o

u1ehiz5o6#

你可以用这个

let someArray = theRecentSavedData.filter({$0.labelToDisplay?.localizedCaseInsensitiveContains(searchBar.text ?? "") ?? false})

在someArray中,您将获得所有匹配的字符串
例如,如果在RecentSavedData数组中有一个类似**"Gel"的字符串,并且如果键入"gel"**,它将为您提供Gel。

相关问题