如何在Swift中使用正则表达式创建String拆分扩展?

时间:2014-08-13 19:56:34

标签: swift

我写了一个创建split方法的扩展名:

extension String {
    func split(splitter: String) -> Array<String> {
        return self.componentsSeparatedByString(splitter)
    }
}

所以在操场上我可以写:

var str = "Hello, playground"

if str.split(",").count > 1{
    var out = str.split(",")[0]

    println("output: \(out)") // output: Hello
}

在Java中使用正则表达式我需要做什么:

str.split("[ ]+")

因为这种方式不起作用。

谢谢,

1 个答案:

答案 0 :(得分:9)

首先,您的拆分功能有一些冗余。它足以返回

return self.componentsSeparatedByString(splitter)

其次,要使用正则表达式,您只需要创建一个NSRegularExpression,然后用您自己的“停止字符串”替换所有出现的内容,最后使用它们分开。 E.g。

let regEx = NSRegularExpression.regularExpressionWithPattern
  (splitter, options: NSRegularExpressionOptions(), error: nil)
let stop = "SomeStringThatYouDoNotExpectToOccurInSelf"
let modifiedString = regEx.stringByReplacingMatchesInString
     (self, options: NSMatchingOptions(), 
              range: NSMakeRange(0, countElements(self)), 
       withTemplate:stop)
return modifiedString.componentsSeparatedByString(stop)