対象:
Swift3

部分文字列の取得(Swift)

部分文字列を取得する方法をいくつか挙げておく。先頭1文字を取得するには、substring(to:)メソッドとindex(after:)メソッドを利用する。index(after:)メソッドは次のインデックスを返すメソッドだ。末尾1文字を取得するには、substring(from:)とindex(before:)メソッドを利用する。index(before:)メソッドは1つ前のインデックスを返すメソッドだ。

        let str1 = "0123456789"
        // 先頭1文字取得
        print(str1.substring(to: str1.index(after: str1.startIndex)))
        // 末尾1文字取得
        print(str1.substring(from: str1.index(before: str1.endIndex)))
0
9

String.Indexと[]を使うとString中の任意の1文字(Character)を取得できる。

        // 先頭1文字(Character)取得
        print(str1[str1.startIndex])
        // 末尾1文字(Character)取得
        print(str1[str1.index(before: str1.endIndex)])
0
9

index(_:offsetBy:)メソッドを使うと、String.Indexの加減算ができるので、先頭n文字、あるいは末尾n文字を取得できる。

        // 先頭3文字取得
        print(str1.substring(to: str1.index(str1.startIndex, offsetBy: 3)))
        // 末尾3文字取得
        print(str1.substring(from: str1.index(str1.endIndex, offsetBy: -3)))
012
789

substring(with:)メソッドと範囲演算子を使えば、任意の位置からn文字を取得できる。

        // 先頭3文字目から3文字(= 5 - 2)取得
        print(str1.substring(with: str1.index(str1.startIndex, offsetBy: 2)..<str1.index(str1.startIndex, offsetBy: 5)))
234

[]を使ってもsubstring(with:)メソッドと同じことができる。

        // 先頭3文字目から3文字(= 5 - 2)取得
        print(str1[str1.index(str1.startIndex, offsetBy: 2)..<str1.index(str1.startIndex, offsetBy: 5)])
(2015/02/16)
(2016/10/19 更新) Swift 3.0対応。

新着情報
【iOS Objective-C, Swift Tips】バッジの表示(Swift)
【iOS Objective-C, Swift Tips】画像の向きを指定して保存する(Swift)
【iOS Objective-C, Swift Tips】UIImagePickerControllerの表示を日本語にする(Swift)

Copyright(C) 2004-2016 モバイル開発系(K) All rights reserved.
[Home]