In this post I’ll discuss replacing characters in a string, splitting a string using some value, and using regexes to count the number of matches in a string, and locating the first match in a string. I’m using XCode 6.4 with Swift 1.2. If you’re not sure which version of Swift you’re running, you can call the following from the command line,
$ xcrun swift --version Apple Swift version 1.2 (swiftlang-602.0.53.1 clang-602.0.53) Target: x86_64-apple-darwin15.0.0
First Thing
I’m running this in a playground, and I’ve imported Cocoa at the first line,
import Cocoa
Replacing Characters
The following will replace and ", " sequences with "+". If it doesn’t find a ", " then str2 will simply be a copy of str1.
var str1 = "Hello, playground" var str2 = str1.stringByReplacingOccurrencesOfString( ", ", withString: "+" )
Split a String
Splitting a string predictably returns an array of strings.
str1 = "Hallo, Welt"
var arr = str1.componentsSeparatedByString(", ")
str2 = join("*", arr)
[/codehttps://developer.apple.com/library/mac/documentation/AppKit/Reference/NSTextCheckingResult_Class/index.html#//apple_ref/occ/cl/NSTextCheckingResult]
# Search for a Substring #
This operation will return an `Integer`, so you don't have to worry about getting a `nil` if there are no matches.
[code]
var regex = NSRegularExpression( pattern:"\\*", options:nil, error:nil )
var match = regex!.numberOfMatchesInString( str2, options: nil, range: NSRange( location: 0, length: count(str2) ) )
println(match)
Locate the First Match in a String
This operation returns a NSTextCheckingResult which is returned by the NSRegularExpression and NSDataDetector classes to indicate the discovery of content.
var fmatch = regex!.firstMatchInString( str2, options: nil, range: NSRange( location:0, length: count(str2) ) ) println( fmatch!.range.location )
At the end here, I’ve called the range attribute of the NSTextCheckingResult, which is an NSRange object, and then I accessed the location attribute of the NSRange object. For more information about NSRange, checkout NSHipster.