【Swift】String変数から文字列を切り出す。(Swift 2.1、XCode 7.2)
String変数から文字列を切り出す
String変数の指定したインデックスから末尾までを取得するには以下のメソッドを使う。引数には開始インデックスを与える。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
/* ** 【メソッド】substringFromIndex ** 【説明】String型変数の指定したインデックスから末尾までを取得する。 ** startIndexは先頭のインデックス、endIndexは末尾のインデックスを表すStringの要素 */ var test1 = "あいうえおかきくけこ" //文字列の先頭から末尾までを取得 print(test1.substringFromIndex(test1.startIndex)) //実行結果 //あいうえおかきくけこ //文字列の3文字目から末尾までを取得 print(test1.substringFromIndex(test1.startIndex.advancedBy(2))) //実行結果 //うえおかきくけこ |
String変数の先頭から指定したインデックスまでを取得するには以下のメソッドを用いる。引数には終了インデックスを与える。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
/* ** 【メソッド】substringToIndex ** 【説明】String型変数の先頭から指定したインデックスまでを取得する。 */ var test1 = "あいうえおかきくけこ" //文字列の先頭から末尾までを取得 print(test1.substringToIndex(test1.endIndex)) //実行結果 //あいうえおかきくけこ //文字列の末尾から5文字を取得 print(test1.substringToIndex(test1.endIndex.advancedBy(-5))) //実行結果 //あいうえお |
インデックスの範囲を指定して取得するには以下のメソッドを用いる。引数にはインデックスの範囲を与える。範囲の詳細は今後の記事で説明する。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
/* ** 【メソッド】substringWithRange ** 【説明】インデックス値の範囲を指定して、String型変数から文字列を切り出す。 */ var test1 = "あいうえおかきくけこ" //文字列の先頭から末尾までを取得 print(test1.substringWithRange(test1.startIndex..<test1.endIndex)) //実行結果 //あいうえおかきくけこ //文字列の「先頭3文字目」から「末尾3文字マイナス」までを取得 print(test1.substringWithRange(test1.startIndex.advancedBy(2)..<test1.endIndex.advancedBy(-3))) //実行結果 //うえおかき |
String型変数から文字列を検索し、ヒットした文字列の前後を切り出す方法について考える。まず、文字列を検索してインデックスの範囲を取得するには以下のメソッドを使用する。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 |
/* ** 【メソッド】rangeOfString ** 【説明】String型変数から文字列を検索し、インデックス値の範囲を取得する。 */ var test1 = "明日は多分雨が降るでしょう" //「多分」に一致する文字列を検索しRangeを取得する print(test1.rangeOfString("多分")) //実行結果 //Optional(Range(3..<5)) //「多分」に一致する文字列を検索し、先頭のインデックスを取得 print(test1.rangeOfString("多分")?.startIndex) //実行結果 //Optional(3) //「多分」に一致する文字列を検索し、末尾のインデックスを取得 print(test1.rangeOfString("多分")?.endIndex) //実行結果 //Optional(5) |
取得したインデックスの範囲を利用して文字列を切り出すには以下のようにする
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
/* ** 【補足】String型変数から文字列を検索した結果をもとに文字列を切り出す。 */ var test1 = "明日は多分雨が降るでしょう" //「多分」までの文字列を取得する print(test1.substringToIndex((test1.rangeOfString("多分")?.startIndex)!)) //実行結果 //明日は //「多分」より後ろの文字列を取得する print(test1.substringFromIndex((test1.rangeOfString("多分")?.endIndex)!)) //実行結果 //雨が降るでしょう |