|
|||||
|
対象: 部分文字列の取得(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]
|
|||||