2

I wrote extension that create split method:

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

So in playground I can write:

var str = "Hello, playground"

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

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

What do I need to make it work with regex like in Java:

str.split("[ ]+")

Because this way it doesn't work.

Thanks,

snaggs
  • 5,223
  • 15
  • 61
  • 121
  • I'd start with this method here: https://news.ycombinator.com/item?id=7890148. Run that, break off the string until the start of the found range and keep doing it until it returns `NSNotFound`. – Alex Wayne Aug 13 '14 at 21:05

1 Answers1

9

First, your split function has some redundancy. It is enough to return

return self.componentsSeparatedByString(splitter)

Second, to work with a regular expression you just have to create a NSRegularExpression and then perhaps replace all occurrences with your own "stop string" and finally separate using that. 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)
Mundi
  • 78,879
  • 17
  • 112
  • 137