Swiftのexercism.iosを解いている時に、正規表現を使いたい箇所に出くわしました。
Swift、ObjCのそれを使わないといけないのですね。私が扱う言語の中では一番手間隙がかかるやつでした。
メモメモ。以下は、入力文字列に対して 0-9 の数字を文字列として抜き出すメソッドです。
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| private func format(startingNumber: String) -> String { | |
| let pattern = "[0-9]+" | |
| let regex = try! NSRegularExpression(pattern: pattern, options: .CaseInsensitive) | |
| let matches = regex.matchesInString(startingNumber, options: [], range: NSMakeRange(0, startingNumber.characters.count)) | |
| var results: [String] = [] | |
| matches.forEach { match in | |
| results.append((startingNumber as NSString).substringWithRange(match.rangeAtIndex(0))) | |
| } | |
| return results.joinWithSeparator("") | |
| } |
他、String(instance) として、 instance から値を取得できる CustomStringConvertible を使ったので合わせてメモ。
Swift、Appleの2.1向けの資料は読んでいたのですが、やっぱり巨大だ…