首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Swift startsWith方法?

Swift startsWith方法?
EN

Stack Overflow用户
提问于 2015-09-19 13:18:26
回答 3查看 50K关注 0票数 167

Swift中有startsWith()方法或类似的东西吗?

我基本上是在检查某个字符串是否以另一个字符串开头。我还希望它不区分大小写。

如你所知,我只是试图做一个简单的搜索功能,但我似乎在这方面失败得很惨重。

这就是我想要的:

输入"sa“应该会给出"San Antonio”、"Santa Fe“等的结果。输入"SA”或"Sa“甚至是"sA”也应该返回"San Antonio“或"Santa Fe”。

我用的是

代码语言:javascript
复制
self.rangeOfString(find, options: NSStringCompareOptions.CaseInsensitiveSearch) != nil 

在iOS9之前,它工作得很好。然而,在升级到iOS9后,它停止工作,现在搜索是区分大小写的。

代码语言:javascript
复制
    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 ");
    }
EN

回答 3

Stack Overflow用户

发布于 2015-10-29 23:24:06

下面是startsWith的Swift扩展实现:

代码语言:javascript
复制
extension String {

  func startsWith(string: String) -> Bool {

    guard let range = rangeOfString(string, options:[.AnchoredSearch, .CaseInsensitiveSearch]) else {
      return false
    }

    return range.startIndex == startIndex
  }

}

示例用法:

代码语言:javascript
复制
var str = "Hello, playground"

let matches    = str.startsWith("hello") //true
let no_matches = str.startsWith("playground") //false
票数 12
EN

Stack Overflow用户

发布于 2017-08-23 20:26:14

在swift 4中将引入func starts<PossiblePrefix>(with possiblePrefix: PossiblePrefix) -> Bool where PossiblePrefix : Sequence, String.Element == PossiblePrefix.Element

示例用法:

代码语言:javascript
复制
let a = 1...3
let b = 1...10

print(b.starts(with: a))
// Prints "true"
票数 6
EN

Stack Overflow用户

发布于 2017-01-25 20:29:20

Swift 3版本:

代码语言:javascript
复制
func startsWith(string: String) -> Bool {
    guard let range = range(of: string, options:[.caseInsensitive]) else {
        return false
    }
    return range.lowerBound == startIndex
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32664543

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档