Dan*_*all 18 arrays nsarray swift
我有一个包含许多字符串的数组.我已经使用contains()
(见下文)来检查数组中是否存在某个字符串但是我想检查字符串的一部分是否在数组中?
itemsArray = ["Google, Goodbye, Go, Hello"]
searchToSearch = "go"
if contains(itemsArray, stringToSearch) {
NSLog("Term Exists")
}
else {
NSLog("Can't find term")
}
Run Code Online (Sandbox Code Playgroud)
上面的代码只是检查数组中是否存在整个值,但我想找到 "Google, Google and Go"
Ami*_*t89 25
试试这样吧.
let itemsArray = ["Google", "Goodbye", "Go", "Hello"]
let searchToSearch = "go"
let filteredStrings = itemsArray.filter({(item: String) -> Bool in
var stringMatch = item.lowercaseString.rangeOfString(searchToSearch.lowercaseString)
return stringMatch != nil ? true : false
})
Run Code Online (Sandbox Code Playgroud)
filteredStrings
将包含具有匹配子字符串的字符串列表.
在Swift中,Array
struct提供了filter方法,它将根据过滤文本条件过滤提供的数组.
Mar*_*n R 25
首先,您已经定义了一个包含单个字符串的数组.你可能想要的是什么
let itemsArray = ["Google", "Goodbye", "Go", "Hello"]
Run Code Online (Sandbox Code Playgroud)
然后你可以使用contains(array, predicate)
和 rangeOfString()
- 可选地
.CaseInsensitiveSearch
- 来检查数组中的每个字符串是否包含搜索字符串:
let itemExists = contains(itemsArray) {
$0.rangeOfString(searchToSearch, options: .CaseInsensitiveSearch) != nil
}
println(itemExists) // true
Run Code Online (Sandbox Code Playgroud)
或者,如果您想要一个具有匹配项而不是yes/no结果的数组:
let matchingTerms = filter(itemsArray) {
$0.rangeOfString(searchToSearch, options: .CaseInsensitiveSearch) != nil
}
println(matchingTerms) // [Google, Goodbye, Go]
Run Code Online (Sandbox Code Playgroud)
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)
Run Code Online (Sandbox Code Playgroud)
Ash*_*k R 13
试试这样吧.
Swift 3.0
import UIKit
let itemsArray = ["Google", "Goodbye", "Go", "Hello"]
var filterdItemsArray = [String]()
func filterContentForSearchText(searchText: String) {
filterdItemsArray = itemsArray.filter { item in
return item.lowercased().contains(searchText.lowercased())
}
}
filterContentForSearchText(searchText: "Go")
print(filterdItemsArray)
Run Code Online (Sandbox Code Playgroud)
产量
["Google", "Goodbye", "Go"]
Run Code Online (Sandbox Code Playgroud)
Anu*_*ugh 10
在具有更好可读性的 Swift 5 中:
let itemsArray = ["Google", "Goodbye", "Go", "Hello"]
let searchString = "Googled"
let result = itemsArray.contains(where: searchString.contains)
print(result) //prints true in the above case.
Run Code Online (Sandbox Code Playgroud)
马克:- 斯威夫特 5、斯威夫特 4
//MARK:- You will find the array when its filter in "filteredStrings" variable you can check it by count if count > 0 its means you have find the results
let itemsArray = ["Google", "Goodbye", "Go", "Hello"]
let searchToSearch = "go"
let filteredStrings = itemsArray.filter({(item: String) -> Bool in
let stringMatch = item.lowercased().range(of: searchToSearch.lowercased())
return stringMatch != nil ? true : false
})
print(filteredStrings)
if (filteredStrings as NSArray).count > 0
{
//Record found
//MARK:- You can also print the result and can do any kind of work with them
}
else
{
//Record Not found
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
26256 次 |
最近记录: |