文書   >   Swift   >  String   >   index(_:offsetBy:limitedBy:)
インスタンスメソッド
index(_:offsetBy:limitedBy:)
与えられたインデックスから指定された距離にあるインデックスを返します。ただし、その距離が与えられた制限インデックスを超えない限り。
宣言
パラメータ
i | コレクションの有効なインデックス。 |
n | オフセット i への距離。 |
limit | 制限 (limit) として使用すべきコレクションの有効なインデックス。n > 0 の場合、i より小さい制限は効果がありません。同様に、n < 0 の場合、i より大きい制限は効果がありません。 |
戻り値
インデックス i から n だけオフセットしたインデックス、その指数が動きの方向において limit を超えていない限り。その場合、メソッドは nil を返します。
議論
以下の例では、文字列の開始インデックスから 4 つ進んだ位置にあるインデックスを取得してから、その位置に文字を印刷します。この操作では、制限された s.endIndex 値を超える必要はないため、成功します。
let s = "Swift"
if let i = s.index(s.startIndex, offsetBy: 4, limitedBy: s.endIndex) {
print(s[i])
}
// Prints "t"
次の例では、s.startIndex から 6 つの位置のインデックスを取得しようとしますが、失敗します。というのも、その距離は limit として渡されたインデックスを超えているためです。
let j = s.index(s.startIndex, offsetBy: 6, limitedBy: s.endIndex)
print(j)
// Prints "nil"
limit として渡されたインデックスがこれらの境界を超えたオフセットを妨げない限り、n として渡された値は、コレクションの範囲を超えて i をオフセットしてはいけません。
複雑さ:O(n)、ここで n は n の絶対値です。
関連
プロトコルから
以下も見よ
インデックスの操作
空でない文字列内の最初の文字の位置。
文字列の "最後を過ぎた" 位置、つまり最後の有効なサブスクリプト引数より 1 つ大きい位置。
func index(after: String.Index) -> String.Index
与えられたインデックスの直後の位置を返します。
func formIndex(after: inout String.Index)
与えられたインデックスをその後継者で置き換えます。
func index(before: String.Index) -> String.Index
与えられたインデックスの直前の位置を返します。
func formIndex(before: inout String.Index)
与えられたインデックスをその前にあった物で置き換えます。
func index(String.Index, offsetBy: String.IndexDistance) -> String.Index
与えられたインデックスから指定された距離にあるインデックスを返します。
func formIndex(inout String.Index, offsetBy: Int)
与えられたインデックスを指定された距離だけオフセットします。
func formIndex(inout String.Index, offsetBy: Int, limitedBy: String.Index) -> Bool
与えられたインデックスを指定された距離だけオフセットするか、または与えられた制限インデックスと等しくなるようにします。
func distance(from: String.Index, to: String.Index) -> String.IndexDistance
2 つのインデックス間の距離を返します。
var indices: DefaultIndices<String>
コレクションをサブスクリプトするのに有効なインデックス(昇順で)。
トップへ(Swift 標準ライブラリ)
トップへ(Swift 標準ライブラリ)
トップへ(Swift 標準ライブラリ)
トップへ(Swift 標準ライブラリ)