Swift の String(文字列)の結合と分割
ここでは Swift の String(文字列)の結合と分割する方法についてご説明します。
Swift の String(文字列)を結合する
Swift の String(文字列)を結合したい時は + 演算子や、 += 演算子、String Interpolation(文字列補間)などが使えます。
この三つの方法で、以下のような greet と name という文字列を結合してみます。
var greet = "Hello"
let name = "Yuka"
let string1 = greet + ", " + name + "!"
let string2 = "\(greet), \(name)!"
greet += ", "
greet += name
greet += "!"
let string3 = greet
print(string1)
print(string2)
print(string3)
実行結果は次のようになります。 string1、string2、string3 の値は同じで、それぞれ文字列が結合されています。
Hello, Yuka!
Hello, Yuka!
Hello, Yuka!
このようなケースでは、String Interpolation(文字列補間)で結合するのが一番感覚的にわかりやすく簡単ですね。
Swift の String(文字列)を分割する
Swift の String(文字列)を分割したい時には、split() メソッドが使えます。
split() メソッドには、separator、maxSplits、omittingEmptySubsequences という引数が指定でき、戻り値として分割された、元の文字列をポイントする Substring 型の配列を返します。
separator のみ必須で、何の文字で分割するかを指定します。
maxSplits は何回分割するかで、デフォルトは Int の最大値になっています。
omittingEmptySubsequences は分割した後で、空文字列を戻り値の要素からはぶくかどうかで、デフォルトは True です。
それでは、split() を使って文字列を分割してみましょう。
let message = "My name is Yuka. "
print(message.split(separator: " "))
print(message.split(separator: " ", maxSplits: 1))
実行結果は次のようになり、message 文字列が、空白で分割されています。
maxSplits を 1 に指定したほうは、一回だけ分割されています。
["My", "name", "is", "Yuka."]
["My", "name is Yuka. "]
Swift の String(文字列)を分割して String の配列を取得する
Swift の文字列の split() メソッドは Substring 型の配列を返し、Substring は元の文字列をポイントしたスライスでした。
分割された String の配列を取得したい時は、NSString の components() メソッドを使って取得することができます。
components() メソッドの引数は、separatedBy のみなので、分割の結果、空文字列の要素があれば、それも配列に含まれます。
また、 NSString のメソッドを使うので、Foundation のインポートが必要になります。
import Foundation
let message = "My name is Yuka. "
let splitResult1 = message.split(separator: " ")
let splitResult2 = message.components(separatedBy: " ")
print(splitResult1)
print(type(of: splitResult1))
print(splitResult2)
print(type(of: splitResult2))
実行結果は次のようになります。 components() メソッドで分割したほうは、String の Array になっていますね。
["My", "name", "is", "Yuka."]
Array<Substring>
["My", "name", "is", "Yuka.", "", ""]
Array<String>
以上、Swift の String(文字列)の結合と分割する方法についてご説明しました。