対象: 部分文字列の取得(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 firstIndex(of:)メソッドは任意の文字が見つかった場合、その最初のString.Indexを返してくれるので、例えば文字列中の?から?までをそれを含めて抜き出したい場合、 // ?から?までを抜き出す let str2 = "Apple?& Green apple?" // Swift 4の書き方 //print(str2[(str2.index(of: "?") ?? str2.startIndex)...(str2.index(of: "?") ?? str2.index(before: str2.endIndex))]) print(str2[(str2.firstIndex(of: "?") ?? str2.startIndex)...(str2.firstIndex(of: "?") ?? str2.index(before: str2.endIndex))]) ?& Green apple? のように書くこともできる。 (2015/02/16) () Swift 5.0対応。
Copyright© 2004-2019 モバイル開発系(K) All rights reserved.
[Home]
|