- 更新日: 2015年6月25日
- Swift & iOS
Swiftで文字列を分割して配列に変換(split/String#componentsSeparatedByString)
Swift で文字列を任意の文字・文字列で分割して、結果として配列を得る方法です。split および String#componentsSeparatedByString メソッドを使う方法を試しました。テスト実行は Xcode の playground を利用しました。
— 環境 —
Swift 1.2
Xcode 6.3.2
split で分割
まず最初に split で文字列を分割してみます。
1 2 3 |
let hogeStr: String = "hoge, fuga, foo, bar, baz" // => "hoge, fuga, foo, bar, baz" let hogeArr: [String] = split(hogeStr, allowEmptySlices: true, isSeparator: { $0 == "," }) hogeArr // => ["hoge", "fuga", "foo", "bar", "baz"] |
分割はできましたが、スペースが勝手に削除されてしまっています!本来なら、[“hoge”, ” fuga”, ” foo”, ” bar”, ” baz”] と fuga, foo, bar, baz の頭には半角スペースが入って欲しいところです。
次に isSeparator の $0 に “, ” と “コンマ+半角スペース” を渡してみたところ…
1 2 |
let hogeArr2: [String] = split(hogeStr, allowEmptySlices: true, isSeparator: { $0 == ", " }) // Error! - Cannot invoke 'split' with an argument list of type |
「Cannot invoke ‘split’ with an argument list of type」というコンパイルエラーが発生してしまいました。色々試したところ、split での isSeparator の $0 比較には特定の文字(1文字)のみ渡すことができ、文字列(複数の文字)は渡せないっぽい。
String#componentsSeparatedByString() で任意の文字列で分割
ということで、文字列を任意の文字列(複数の文字)で分割するためには、String#componentsSeparatedByString() メソッドを利用します。
String#componentsSeparatedByString() で分割。
1 2 |
let hogeArr3: [String] = hogeStr.componentsSeparatedByString(", ") hogeArr3 // => ["hoge", "fuga", "foo", "bar", "baz"] |
“, “(コンマ+半角スペース)の文字列で分割することができました。
分割後に、ちゃんとスペースが残るかも検証。
1 2 3 |
let spaceStr: String = "hoge , fuga , foo , bar , baz" let spaceArr: [String] = spaceStr.componentsSeparatedByString(", ") spaceArr // => ["hoge ", "fuga ", "foo ", "bar ", "baz "] |
今度は期待通りの結果が得られました。split いまいちっぽいので、Swift で文字列を分割する際には、今後は String#componentsSeparatedByString() をメインに使っていこうと思います。
- Swift & iOS の関連記事
- WKWebView/UIWebViewでウェブページが真っ白
- Unityのインストールと初期設定
- WKWebView/UIWebViewでNavigation Barの下にウェブページが隠れるのを回避
- SwiftでArray(配列)などをシャッフル
- Navigation Controllerで画面遷移させるSwiftコード
- Swiftでタップ/スワイプのイベント処理実装・UITapGestureRecognizerとUISwipeGestureRecognizer
- UIPageViewController画面下部のUIPageControlを非表示にする
- Swiftのバージョン確認・REPL実行
- Xcode7.0アップデートで遭遇した課題2つ
- 正規のXcodeかどうかチェック(XcodeGhostマルウェア騒動)
Leave Your Message!