前回の記事で、文字列の切り出しにインデックスを使うことを紹介した。

今回はインデックスを前後に動かすことで、指定位置の文字を取り出す方法を紹介する。

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」へと移動する。

このように負の数を指定することで、インデックスを前に移動することもできる。