Swift3でsubstring

swift2からswift3への移行でsubstringまで変わってる




サンプルソース



先頭からn文字取得

var text = "subStringText"
let n = 3
text = text.substring(to: text.index(text.startIndex, offsetBy: n))

// swift2
// text = text.substringToIndex(text.startIndex.advancedBy(n))

実行結果は"sub"



末尾n文字削除

var text = "subStringText"
let n = 4
text = text.substring(to: text.index(text.endIndex, offsetBy: -n))

// swift2
// text = text.substringToIndex(text.endIndex.advancedBy(-n))

実行結果は"subString"




後ろからn文字取得する

var text = "subStringText"
let n = 10
text = text.substring(from: text.index(text.endIndex, offsetBy: -n))

// swift2
// text = text.substringFromIndex(text.endIndex.advancedBy(-n))

実行結果は"StringText"




先頭n文字を削除

var text = "subStringText"
let n = 3
text = text.substring(from: text.index(text.startIndex, offsetBy: n))

// swift2
// text = text.substringFromIndex(text.startIndex.advancedBy(n))

実行結果は"StringText"




n文字からm文字まで切り出し

var text = "subStringText"
let n = 4
let m = 9
let startIndex = text.index(text.startIndex, offsetBy: n-1)
let endIndex = text.index(text.startIndex, offsetBy: m)
text.substring(with: startIndex..<endIndex)
text = text[startIndex..<endIndex]

// swift2
// text = text.substringWithRange(
//     Range(text.startIndex.advancedBy(n-1)..<text.startIndex.advancedBy(m)))

実行結果は"String"


text.substring(XXXX) だけでなく text[XXXX] と書くことも可能



参考



http://gootara.org/library/2016/09/s3substr.html

こっちは前回書いた記事(swift2バージョン)
Swift2の文字列処理・切り出し方法をまとめた(substring)

この書き方はもうちょっとどうにかならなかったのか

2016年11月15日火曜日