swift - Swift 2 中的 .containsString?

标签 swift nsstring

以前,当您想查看 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/

相关文章:

swift - 如何确定事件文本字段

swift - Realm 反向连接的正确代码是什么?

swift - 通过 Realm 框架如何快速与网络服务器同步(更新和下载)?

objective-c - NSDateFormatter 损失了一年

objective-c - 按空格数拆分 NSString

ios - 无法使用 JSONJoy 解析来自 Socket.IO 的 JSON 数据

java - Protobuf 问题 (alexeyxo/protobuf-swift)

objective-c - 我如何加入 NSSet 的元素来创建 NSString?

ios - 将 base 64 转换为 NSString

ios - 如何在iOS中检查日期是否属于本周?