case insensitive matching search in string array swift 3

前端 未结 4 458
余生分开走
余生分开走 2021-01-07 17:21

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          


        
相关标签:
4条回答
  • 2021-01-07 17:32

    You can try with localizedCaseInsensitiveContains

    let filteredArray = self.arrCountry.filter { $0.localizedCaseInsensitiveContains("india") }
    
    0 讨论(0)
  • 2021-01-07 17:36

    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")
    
    0 讨论(0)
  • 2021-01-07 17:42

    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 }
    
    0 讨论(0)
  • 2021-01-07 17:49

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

    Swift 3 and above

    let filteredArray = self.arrCountry.filter { $0.lowercased() == "india" }
    
    0 讨论(0)
提交回复
热议问题