対象:
Swift4

部分文字列の取得(Swift)

部分文字列を取得する方法をいくつか挙げておく。先頭1文字を取得するには、prefixメソッドを利用する。末尾1文字を取得するには、suffixメソッドを利用する。

        let str1 = "0123456789"
        // 先頭1文字取得
        // Swift 3の書き方
        // print(str1.substring(to: str1.index(after: str1.startIndex)))
        // Swift 4の書き方
        print(str1.prefix(1))
        // 末尾1文字取得
        // Swift 3の書き方
        // print(str1.substring(from: str1.index(before: str1.endIndex)))
        // Swift 4の書き方
        print(str1.suffix(1))
0
9

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

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

prefixメソッド、およびsuffixメソッドは共に取得する文字列の最大長を指定できるので、先頭n文字、あるいは末尾n文字も取得することができる。この時の「文字列の長さ」の考え方はSwift 4.0から新たにStringに追加されたcountの考え方になるだろう。

        // 先頭3文字取得
        // Swift 3の書き方
        // print(str1.substring(to: str1.index(str1.startIndex, offsetBy: 3)))
        // Swift 4の書き方
        print(str1.prefix(3))
        // 末尾3文字取得
        // Swift 3の書き方
        // print(str1.substring(from: str1.index(str1.endIndex, offsetBy: -3)))
        // Swift 4の書き方
        print(str1.suffix(3))
012
789

[]と範囲演算子を使えば、任意の位置からn文字を取得できる。

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

index(of:)メソッドは任意の文字が見つかった場合、そのString.Indexを返してくれるので、例えば文字列中の🍎から🍏までをそれを含めて抜き出したい場合、

        // 🍎から🍏までを抜き出す
        let str2 = "Apple🍎& Green apple🍏"
        print(str2[(str2.index(of: "🍎") ?? str2.startIndex)...(str2.index(of: "🍏") ?? str2.index(before: str2.endIndex))])
🍎& Green apple🍏

のように書くこともできる。

(2015/02/16)
() Swift 4.0対応。

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

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