Check if array contains part of a string in Swift?

前端 未结 9 1079
无人共我
无人共我 2020-12-08 15:04

I have an array containing a number of strings. I have used contains() (see below) to check if a certain string exists in the array however I would like to chec

9条回答
  •  萌比男神i
    2020-12-08 15:18

    First of all, you have defined an array with a single string. What you probably want is

    let itemsArray = ["Google", "Goodbye", "Go", "Hello"]
    

    Then you can use contains(array, predicate) and rangeOfString() – optionally with .CaseInsensitiveSearch – to check each string in the array if it contains the search string:

    let itemExists = contains(itemsArray) {
        $0.rangeOfString(searchToSearch, options: .CaseInsensitiveSearch) !=  nil
    }
    
    println(itemExists) // true 
    

    Or, if you want an array with the matching items instead of a yes/no result:

    let matchingTerms = filter(itemsArray) {
        $0.rangeOfString(searchToSearch, options: .CaseInsensitiveSearch) !=  nil
    }
    
    println(matchingTerms) // [Google, Goodbye, Go]
    

    Update for Swift 3:

    let itemExists = itemsArray.contains(where: {
        $0.range(of: searchToSearch, options: .caseInsensitive) != nil
    })
    print(itemExists)
    
    let matchingTerms = itemsArray.filter({
        $0.range(of: searchToSearch, options: .caseInsensitive) != nil
    })
    print(matchingTerms)
    

提交回复
热议问题