Swift2 检查列表中的成员资格的简单方法?
对于在闭包中使用(尽管我认为它在其他地方也很有用),检查给定元素是否为列表成员(或任何字符是否为字符串成员)的最干净的方法是什么Swift2 检查列表中的成员资格的简单方法?,swift2,Swift2,对于在闭包中使用(尽管我认为它在其他地方也很有用),检查给定元素是否为列表成员(或任何字符是否为字符串成员)的最干净的方法是什么 例如,要检查字符串“abcde”是否包含“aeiou”中的任何字符,或者列表[“bill”、“sam”、“suzy”]是否包含[“abe”、“bill”、“charlie”]?
例如,要检查字符串
“abcde”
是否包含“aeiou”
中的任何字符,或者列表[“bill”、“sam”、“suzy”]
是否包含[“abe”、“bill”、“charlie”]
?// With [Character]
let vowels: [Character] = ["a", "e", "i", "o", "u"]
let chars: [Character] = ["a", "b", "c", "d", "e"]
let resultVowels = vowels.filter { chars.contains($0) }
resultVowels.count // == 2
resultVowels.description // == "[a, e]"
// With [String]
let people = ["Bill", "Sam", "Suzy"]
let peeps = ["Abe", "Bill", "Charlie"]
let resultPeople = people.filter { peeps.contains($0) }
resultPeople.count // == 1
resultPeople.description // == "[Bill]"
结果将是匹配的名称(或数字、字符等)。因此,在这个过程中,您不仅可以获得计数,还可以获得比较的内容。只要类型遵循Equatable,这将适用于您。
如果要返回布尔值,只需执行以下操作:
return filteredArray.count != 0
现在,如果您想将[Character]与字符串进行比较,那么:
let vowels: [Character] = ["a", "e", "i", "o", "u"]
let someString = "abcde"
let result = vowels.filter { someString.characters.contains($0) }
result.count // == 2
result.description // == "[a, e]"
String.characters属性是Swift 2引入的一项新功能
希望我能为您提供帮助。Swift阵列内置了用于此确切功能的功能 我建议从苹果公司的网站开始 下面是您问题的一个示例:
// With [Character]
let vowels: [Character] = ["a", "e", "i", "o", "u"]
let chars: [Character] = ["a", "b", "c", "d", "e"]
let resultVowels = vowels.filter { chars.contains($0) }
resultVowels.count // == 2
resultVowels.description // == "[a, e]"
// With [String]
let people = ["Bill", "Sam", "Suzy"]
let peeps = ["Abe", "Bill", "Charlie"]
let resultPeople = people.filter { peeps.contains($0) }
resultPeople.count // == 1
resultPeople.description // == "[Bill]"
结果将是匹配的名称(或数字、字符等)。因此,在这个过程中,您不仅可以获得计数,还可以获得比较的内容。只要类型遵循Equatable,这将适用于您。
如果要返回布尔值,只需执行以下操作:
return filteredArray.count != 0
现在,如果您想将[Character]与字符串进行比较,那么:
let vowels: [Character] = ["a", "e", "i", "o", "u"]
let someString = "abcde"
let result = vowels.filter { someString.characters.contains($0) }
result.count // == 2
result.description // == "[a, e]"
String.characters属性是Swift 2引入的一项新功能
我希望我能帮助你。1)两个字的常用字符
使用Set
struct:
let set0 = Set("abcde".characters)
let set1 = Set("aeiou".characters)
let intersection = set0.intersect(set1) // {"e", "a"}
2) 2个列表中的常用词
类似地,您可以找到两个字符串数组的交点:
let set0 : Set = ["bill", "sam", "suzy"]
let set1 : Set = ["abe", "bill", "charlie"]
let intersection = set0.intersect(set1) // {"bill"}
3) 返回阵列
请注意,在这两个示例中,交点
常量是一个集合
。您可以将其转换为数组写入:
let list = Array(intersection)
希望这有帮助
注意:此代码适用于Swift 2.0
更新
更具体地说,如果您想知道是否存在交叉点,只需写下:
!intersection.isEmpty
1)常用字符2个单词
使用Set
struct:
let set0 = Set("abcde".characters)
let set1 = Set("aeiou".characters)
let intersection = set0.intersect(set1) // {"e", "a"}
2) 2个列表中的常用词
类似地,您可以找到两个字符串数组的交点:
let set0 : Set = ["bill", "sam", "suzy"]
let set1 : Set = ["abe", "bill", "charlie"]
let intersection = set0.intersect(set1) // {"bill"}
3) 返回阵列
请注意,在这两个示例中,交点
常量是一个集合
。您可以将其转换为数组写入:
let list = Array(intersection)
希望这有帮助
注意:此代码适用于Swift 2.0
更新
更具体地说,如果您想知道是否存在交叉点,只需写下:
!intersection.isEmpty
在第一次匹配后取消搜索可以吗?在第一次匹配后取消搜索可以吗?如果数组有重复的元素,这种方法可能会导致意外的结果。查看问题的文本,我仍然认为这个答案是正确的:
例如,检查字符串“abcde”是否正确包含“aeiou”中的任何字符。
。但是,我更新了我的答案,以获得一个布尔值,指示两个列表之间是否存在交集。如果数组中有重复的元素,这种方法可能会导致意外的结果。查看问题的文本,我仍然认为此答案是正确的:例如,检查字符串“abcde”包含“aeiou”中的任何字符。
。但是我更新了我的答案,得到了一个布尔值,指示这两个列表之间是否存在交集。答案很好。我给appzYourLife打勾只是因为他的方法更简洁,如果我可以的话,我也会给这个答案打勾。答案很好。我给appzYourLife打勾只是因为他的方法更简洁,如果我可以的话,我也会给这个答案打勾。