Initializer

init(_:within:)

Creates an index in the given Unicode scalars view that corresponds exactly to the specified UTF16View position. 与えられたユニコードスカラービューの中のあるインデックスを作成します、それは指定されたUTF16View位置に正確に対応します。

Declaration 宣言

init?(_ sourcePosition: String.Index, within unicodeScalars: String.UnicodeScalarView)

Parameters パラメータ

sourcePosition

A position in the utf16 view of a string. utf16Index must be an element of String(unicodeScalars).utf16.indices. ある文字列のutf16の中のある位置。utf16Indexは、String(unicodeScalars).utf16.indicesの要素でなければなりません。

unicodeScalars

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

Discussion 解説

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


let cafe = "Café 🍵"


let utf16Index = cafe.utf16.firstIndex(of: 32)!
let scalarIndex = String.Index(utf16Index, within: cafe.unicodeScalars)!


print(String(cafe.unicodeScalars[..<scalarIndex]))
// Prints "Café"

If the index passed as sourcePosition doesn’t have an exact corresponding position in unicodeScalars, the result of the initializer is nil. For example, an attempt to convert the position of the trailing surrogate of a UTF-16 surrogate pair results in nil. sourcePositionとして渡されたインデックスがまさにその対応する位置をunicodeScalarsにおいて持たないならば、イニシャライザの結果はnilです。例えば、UTF-16のサロゲートペアの後続サロゲートの位置を変換する試みはnilという結果になります。