How to split a string in Swift [duplicate] How to split a string in Swift [duplicate] swift swift

How to split a string in Swift [duplicate]


Try this:

var myString: String = "hello hi";var myStringArr = myString.componentsSeparatedByString(" ")

Where myString is the name of your string, and myStringArr contains the components separated by the space.

Then you can get the components as:

var hello: String = myStringArr [0]var hi: String = myStringArr [1]

Doc: componentsSeparatedByString

EDIT: For Swift 3, the above will be:

var myStringArr = myString.components(separatedBy: " ")

Doc: components(separatedBy:)


Here are split that receives regex as well. You can define extension for future usage:

Swift 4

extension String {    func split(regex pattern: String) -> [String] {        guard let re = try? NSRegularExpression(pattern: pattern, options: [])            else { return [] }        let nsString = self as NSString // needed for range compatibility        let stop = "<SomeStringThatYouDoNotExpectToOccurInSelf>"        let modifiedString = re.stringByReplacingMatches(            in: self,            options: [],            range: NSRange(location: 0, length: nsString.length),            withTemplate: stop)        return modifiedString.components(separatedBy: stop)    }}

Examples:

let string1 = "hello world"string1.split(regex: " ")    // ["hello", "world"]let string2 = "hello    world"string2.split(regex: "[ ]+")  // ["hello", "world"]

Swift 2.2

extension String {    func split(regex pattern: String) -> [String] {        guard let re = try? NSRegularExpression(pattern: pattern, options: [])             else { return [] }        let nsString = self as NSString // needed for range compatibility        let stop = "<SomeStringThatYouDoNotExpectToOccurInSelf>"        let modifiedString = re.stringByReplacingMatchesInString(            self,            options: [],            range: NSRange(location: 0, length: nsString.length),            withTemplate: stop)        return modifiedString.componentsSeparatedByString(stop)    }}

Swift 2.0

extension String {    // java, javascript, PHP use 'split' name, why not in Swift? :)    func split(regex: String) -> Array<String> {        do{            let regEx = try NSRegularExpression(pattern: regex, options: NSRegularExpressionOptions())            let stop = "<SomeStringThatYouDoNotExpectToOccurInSelf>"            let nsString = self as NSString // needed for range compatibility            let modifiedString = regEx.stringByReplacingMatchesInString (self, options: NSMatchingOptions(), range: NSRange(location: 0, length: nsString.length), withTemplate:stop)            return modifiedString.componentsSeparatedByString(stop)        } catch {            return []        }    }}

Swift 1.1

extension String {    // java, javascript, PHP use 'split' name, why not in Swift? :)    func split(splitter: String) -> Array<String> {        let regEx = NSRegularExpression(pattern: 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)    }}

Examples:

let string1 = "hello world"string1.split(" ")    // ["hello", "world"]let string2 = "hello    world"string2.split("[ ]+")  // ["hello", "world"]