首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >斯威夫特2中的.containsString?

斯威夫特2中的.containsString?
EN

Stack Overflow用户
提问于 2015-06-19 00:05:51
回答 1查看 1.3K关注 0票数 0

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

EN

回答 1

Stack Overflow用户

发布于 2015-06-19 00:11:42

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

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

现在来检查一下,而不是这样:

代码语言:javascript
复制
if NSString(string: line).containsString(" ")...

你可以使用更好的外观:

代码语言:javascript
复制
if line.contains(" ")...

这不再抱怨版本,而且(IMHO)看起来也更好。你几乎肯定也想要这样:

代码语言:javascript
复制
extension String {
    var length: Int {
        return self.characters.count
    }
}

苹果一直在改变你获取长度的方式,我希望未来对API的任何改变都将是#available-able,在这一点上.length可以很容易地修改。这些只是为了保持理智:

代码语言:javascript
复制
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)
    }
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30920465

复制
相关文章

相似问题

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