gpt4 book ai didi

swift - Swift 2 中的 .containsString?

转载 作者:行者123 更新时间:2023-11-30 10:14:36 26 4
gpt4 key购买 nike

以前,当您想查看 Swift 字符串是否包含另一个字符串时,您可以将其转换为 NSString 并调用 .containsString。苹果以他们无限的智慧,使这个版本感知,所以如果你在 S2 下尝试它,它会要求一个 #available 包装器,即使你的目标平台确实支持它(我猜这是一个错误)。

最佳答案

所以最好的解决方案似乎是这样的:

extension String {
func contains(substr: String) -> Bool {
if #available(OSX 10.10, *) {
return NSString(string: self).containsString(substr)
} else {
return self.rangeOfString(substr) != nil
}
}
}

现在检查它,而不是这样:

if NSString(string: line).containsString(" ")...

你可以使用看起来更好看的:

if line.contains(" ")...

这不再提示版本,而且(恕我直言)看起来也更好了。您几乎肯定也想要这个:

extension String {
var length: Int {
return self.characters.count
}
}

Apple 不断改变获取长度的方式,我希望 future 对 API 的任何更改都能够实现 #available,届时 .length 就可以容易修改。这些只是为了理智:

extension String {
subscript (r: Range<Int>) -> String {
get {
let subStart = advance(self.startIndex, r.startIndex, self.endIndex)
let subEnd = advance(subStart, r.endIndex - r.startIndex, self.endIndex)
return self.substringWithRange(Range(start: subStart, end: subEnd))
}
}
func substring(from: Int) -> String {
let end = self.characters.count
return self[from..<end]
}
func substring(from: Int, length: Int) -> String {
let end = from + length
return self[from..<end]
}
}

extension String {
func trim() -> String {
return self.stringByTrimmingCharactersInSet(NSCharacterSet.whitespaceAndNewlineCharacterSet())
}
func trim(withSet: NSCharacterSet) -> String {
return self.stringByTrimmingCharactersInSet(withSet)
}
}

关于swift - Swift 2 中的 .containsString?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30920465/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com