class book{
var nameOfBook: String!
}
var englishBooks=[book(),book(),book()]
var arr = englishBooks.filter {
contains($0.nameOfBook, "rt")
}
Run Code Online (Sandbox Code Playgroud)
我正在使用此过滤器,但有错误无法使用参数调用过滤器
Mar*_*n R 40
contains()检查序列是否包含给定元素,例如,如果a String包含给定元素Character.
如果您打算查找名称中包含子字符串 "rt"的所有书籍,那么您可以使用rangeOfString():
var arr = englishBooks.filter {
$0.nameOfBook.rangeOfString("rt") != nil
}
Run Code Online (Sandbox Code Playgroud)
或者用于不区分大小写的比较:
var arr = englishBooks.filter {
$0.nameOfBook.rangeOfString("rt", options: .CaseInsensitiveSearch) != nil
}
Run Code Online (Sandbox Code Playgroud)
从Swift 2开始,你可以使用
nameOfBook.containsString("rt") // or
nameOfBook.localizedCaseInsensitiveContainsString("rt")
Run Code Online (Sandbox Code Playgroud)
在Swift 3中这是
nameOfBook.contains("rt") // or
nameOfBook.localizedStandardContains("rt") // or
nameOfBook.range(of: "rt", options: .caseInsensitive) != nil
Run Code Online (Sandbox Code Playgroud)
Ohm*_*hmy 13
对不起,这是一个旧线程.稍微更改代码以正确初始化变量'nameOfBook'.
class book{
var nameOfBook: String!
init(name: String) {
nameOfBook = name
}
}
Run Code Online (Sandbox Code Playgroud)
然后我们可以创建一系列书籍.
var englishBooks = [book(name: "Big Nose"), book(name: "English Future
Prime Minister"), book(name: "Phenomenon")]
Run Code Online (Sandbox Code Playgroud)
数组的'filter'函数接受一个参数和一些逻辑,'contains'函数可以采用您正在搜索的最简单形式的字符串.
let list1 = englishBooks.filter { (name) -> Bool in
name.contains("English")
}
Run Code Online (Sandbox Code Playgroud)
然后你可以像这样打印出list1:
let list2 = arr1.map({ (book) -> String in
return book.nameOfBook
})
print(list2)
// print ["English Future Prime Minister"]
Run Code Online (Sandbox Code Playgroud)
以上两个片段可以写成短手,如下所示:
let list3 = englishBooks.filter{ ($0.nameOfBook.contains("English")) }
print(list3.map({"\($0.nameOfBook!)"}))
Run Code Online (Sandbox Code Playgroud)
2020 | 环球银行金融电信协会 5.1:
public filterStr = ""
public var books: [Book] = []
public var booksFiltered: [Book] {
get {
filterStr.isEmpty
? books
: books.filter { $0.alias.range(of: filterStr, options: .caseInsensitive) != nil }
}
}
Run Code Online (Sandbox Code Playgroud)
如果您想从对象数组(匹配)中删除具有特定 ID (matchIDsToDelete) 的对象区间
var matches = [Match]
var matchIDsToDelete = [String]
matches = matches.filter { !matchIDsToDelete.contains($0.matchID) }
Run Code Online (Sandbox Code Playgroud)
SWIFT 4.0
为了过滤对象并获得结果数组,您可以使用此
self.resultArray = self.upcomingAuctions.filter {
$0.auctionStatus == "waiting"
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
32211 次 |
| 最近记录: |