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.