Swift中有startsWith()方法或类似的东西吗?
我基本上是在检查某个字符串是否以另一个字符串开头。我还希望它不区分大小写。
如你所知,我只是试图做一个简单的搜索功能,但我似乎在这方面失败得很惨重。
这就是我想要的:
输入"sa“应该会给出"San Antonio”、"Santa Fe“等的结果。输入"SA”或"Sa“甚至是"sA”也应该返回"San Antonio“或"Santa Fe”。
我用的是
self.rangeOfString(find, options: NSStringCompareOptions.CaseInsensitiveSearch) != nil
在iOS9之前,它工作得很好。然而,在升级到iOS9后,它停止工作,现在搜索是区分大小写的。
var city = "San Antonio"
var searchString = "san "
if(city.rangeOfString(searchString, options: NSStringCompareOptions.CaseInsensitiveSearch) != nil){
print("San Antonio starts with san ");
}
var myString = "Just a string with san within it"
if(myString.rangeOfString(searchString, options: NSStringCompareOptions.CaseInsensitiveSearch) != nil){
print("I don't want this string to print bc myString does not start with san ");
}
发布于 2015-10-29 23:24:06
下面是startsWith的Swift扩展实现:
extension String {
func startsWith(string: String) -> Bool {
guard let range = rangeOfString(string, options:[.AnchoredSearch, .CaseInsensitiveSearch]) else {
return false
}
return range.startIndex == startIndex
}
}
示例用法:
var str = "Hello, playground"
let matches = str.startsWith("hello") //true
let no_matches = str.startsWith("playground") //false
发布于 2017-08-23 20:26:14
在swift 4中将引入func starts<PossiblePrefix>(with possiblePrefix: PossiblePrefix) -> Bool where PossiblePrefix : Sequence, String.Element == PossiblePrefix.Element
。
示例用法:
let a = 1...3
let b = 1...10
print(b.starts(with: a))
// Prints "true"
发布于 2017-01-25 20:29:20
Swift 3版本:
func startsWith(string: String) -> Bool {
guard let range = range(of: string, options:[.caseInsensitive]) else {
return false
}
return range.lowerBound == startIndex
}
https://stackoverflow.com/questions/32664543
复制相似问题