Swiftの文字列 String.IndexとRangeの使い方
Swift の String 型は整列された文字の集合で、文字へのアクセス、変更、操作は、インデックスによって行われます。この操作を容易にするために、String.Index 型と Range 型が導入されています。
- 文字列のインデックス
String.Index 型は文字列内の単一文字の位置を表します。文字列中の最初の文字のインデックスは、String の startIndex プロパティを使用して取得し、最後の文字から 1 文字先までのインデックスは、endIndex プロパティを使用して取得できます。たとえば、
let str = "Hello, World!"
let startIndex = str.startIndex // 索引0
let endIndex = str.endIndex // 索引13
インデックスの前のインデックスと次のインデックスを取得するには、Stringのindex(before:)とindex(after:)メソッドが使用できます。また、指定したオフセットのインデックスを取得するには、index(_:offsetBy:)メソッドが使用できます。たとえば、
let secondIndex = str.index(after: startIndex) // 索引1
let thirdIndex = str.index(startIndex, offsetBy: 2) // 索引2
String.Indexは抽象型であるため算術演算ができないことに注意してください。配列のようなインデックス操作を行うには、String.Indexの整数表現を使用できます。例:
let startIndex = str.startIndex
let secondIndex = str.index(startIndex, offsetBy: 1)
let thirdIndex = str.index(startIndex, offsetBy: 2)
let secondChar = str[secondIndex] // "e"
let thirdChar = str[thirdIndex] // "l"
- 範囲
Rangeは文字列内の部分文字列を表す範囲の型であり、半開区間演算子(…<)や閉区間演算子(…)を使用して文字列の範囲を作成できる。例えば:
let str = "Hello, World!"
let range = str.startIndex..<str.index(startIndex, offsetBy: 5) // 索引0到4的范围
例えば、文字列の substring(with:) メソッドは指定した範囲の文字列を取得し、 replacingCharacters(in:with:) メソッドは指定した範囲の文字を置換します。
let subStr = str.substring(with: range) // "Hello"
let newStr = str.replacingCharacters(in: range, with: "Hi") // "Hi, World!"
範囲は半開区間であることに注意してください。これは、範囲の開始インデックスは範囲に含まれますが、終了インデックスは含まれません。これは範囲操作を使用して文字のサブセットを操作するのに便利です。
Swiftで文字列を操作するための重要な型は String.Indexと Range です。これらを使用して、文字列の内容にアクセス、編集、操作できます。