Initializer

init(_:within:)

Creates an index in the given UTF-16 view that corresponds exactly to the specified string position. 与えられたUTF-16ビューの中のあるインデックスを作成します、それは指定された文字列位置に正確に対応します。

Declaration 宣言

init?(_ idx: String.Index, within target: String.UTF16View)

Parameters パラメータ

sourcePosition

A position in at least one of the views of the string shared by target. targetによって共有される文字列のいくつかのビューのうち少なくとも1つにおけるある位置。

target

The UTF16View in which to find the new position. それにおいて新しい位置を見つけるUTF16View

Discussion 解説

If the index passed as sourcePosition represents either the start of a Unicode scalar value or the position of a UTF-16 trailing surrogate, then the initializer succeeds. If sourcePosition does not have an exact corresponding position in target, then the result is nil. For example, an attempt to convert the position of a UTF-8 continuation byte results in nil. sourcePositionとして渡されるインデックスがユニコードスカラー値の始まりまたはUTF-16後続サロゲートの位置のどちらかを表すならば、イニシャライザはうまくいきます。sourcePositiontargetの中に正確に対応する位置を持たないならば、そのとき結果はnilです。例えば、UTF-8継続バイトの位置を変換しようとする試みは、nilという結果になります。

The following example finds the position of a space in a string and then converts that position to an index in the string’s utf16 view. 以下の例は、ある空白の位置を文字列の中で見つけて、それからその位置を文字列のもつutf16ビューの中のインデックスに変換します。


let cafe = "Café 🍵"


let stringIndex = cafe.firstIndex(of: "é")!
let utf16Index = String.Index(stringIndex, within: cafe.utf16)!


print(String(cafe.utf16[...utf16Index])!)
// Prints "Café"