前回の記事で、文字列の切り出しにインデックスを使うことを紹介した。
今回はインデックスを前後に動かすことで、指定位置の文字を取り出す方法を紹介する。
offsetByを使ってインデックスを前後に動かす
Stringのindexメソッドでは、offsetByにいくつインデックスを動かすかを指定することで、指定位置の文字を取り出すことができる。
以下の例を見てみよう。
let str = "Swift入門"
let index1 = str.index(str.startIndex, offsetBy: 3)
print(str[index1])
// f
indexメソッドの第一引数にはインデックスの開始位置を表すstartIndexを、第二引数のoffsetByに「インデックスを3つ後に動かす」を表す3を指定する。
この場合、インデックスは開始位置の「S」から始まり、そこから3文字後の「f」へと移動し、結果として「f」が得られる。
次の例を見よう。
let str = "Swift入門"
let index2 = str.index(str.endIndex, offsetBy: -3)
print(str[index2])
// t
今度は第一引数に「末尾の文字の後」を表すendIndexを、offsetByに負の数-3を指定してみる。
この場合、インデックスは末尾の「門」の後から始まり、そこから3文字前の「t」へと移動する。
このように負の数を指定することで、インデックスを前に移動することもできる。