SwiftのStringをsubstringしようとするとき、
いつもやり方を忘れてしまい、調べてしまう。
しかも、入力するときにうまく補完が効かなかったりして、イライラするー!
例えば、年月日を良く切り出すので、それをまとめておく。
Stringのインデックスは、下の図の、下段の数字のようになっている。
下にソースコードを記載したが、2017-06-05の場合、
インデックスは0から10まである。
startIndexは0となり、
endIndexは10となる。
substring(to:)で年を取得する場合は、
4文字目まで欲しいので、4文字目と5文字目の間のインデックス4(開始から4つめ)を指定する。
substring(from:)で日を取得する場合は、
9文字目から欲しいので、8文字目と9文字目の間のインデックス8(後ろから2つ前)を指定する。
substring(with:)で月を取得する場合は、
6文字目と7文字目が欲しいので、
5から7で指定する。
インデックスで指定しているということを意識すれば、
5…7ではなくて、5..<7にするというのも、
なんとなく、そうなんかなと思う。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
var str = "2017-06-05" //substring(to:) let toIndex = str.index(str.startIndex, offsetBy: 4) // 4 let year = str.substring(to: toIndex) // "2017" //substring(from:) let fromIndex = str.index(str.endIndex, offsetBy: -2) // 8 let day = str.substring(from: fromIndex) // "05" //substring(with:) let start = str.index(str.startIndex, offsetBy: 5) // 5 let end = str.index(start, offsetBy: 2) // 7 let month = str.substring(with: start..<end) // "06" |
コメント