kitoko552.memo

kitoko552のメモ

joinWithSeparatorで配列内の文字列を結合する

要点

  • joinWithSeparator(_ separator: String) -> Stringを使う。
let array = ["h", "o", "g", "e"]
let hoge = array.joinWithSeparator("-")
print(hoge) // h-o-g-e

配列内の文字列を結合したい

配列内の文字列を結合したいと思ったときに、真っ先に思いつくのはfor文(以下の例ではforEachを使っています)でぐるぐる回して一つ一つ結合する方法ではないでしょうか。

let array = ["h", "o", "g", "e"]
var hoge = ""
array.forEach {
    hoge.appendContentsOf($0)
}
print(hoge) // hoge

しかしこの方法はスマートではないし、間に何か文字を入れたいときは先頭か末尾に文字が入ってしまい、いらない文字を削除する処理も追加で書かなければならなくなります。

let array = ["h", "o", "g", "e"]
var hoge = ""
array.forEach {
    hoge.appendContentsOf($0)
    hoge.appendContentsOf("-")
}
print(hoge) // h-o-g-e- 入れたい文字列が末尾についてしまう

joinWithSeparatorを使う

joinWithSeparator(_ separator: String) -> Stringを使えば上のような泥臭い処理は書かなくても大丈夫です。
このメソッドは、配列内の文字列を引数のseparatorで結合してくれます。

let array = ["h", "o", "g", "e"]
let hoge = array.joinWithSeparator("-")
print(hoge) // h-o-g-e

配列内の文字列をそのまま結合したい場合は、空の文字列を引数に渡します。

let array = ["h", "o", "g", "e"]
let hoge = array.joinWithSeparator("")
print(hoge) // hoge

賢い!

ちなみに

配列の中身がStringじゃない場合はコンパイルエラーになるので一度Stringに変換してから使いましょう。

let array = [1, 2, 3]
let nums = array.map { "\($0)" }.joinWithSeparator("-")
print(nuts) // 1-2-3

公式リファレンスはこちら developer.apple.com