文書   >   Swift   >  String   >   Index   >   init(_:within:)


イニシャライザ


init(_:within:)


与えられた UTF-8 ビューに、指定された UTF-16View の位置に正確に対応するインデックスを作成します。





宣言


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

パラメータ


sourcePositionString 内の位置またはそのビューの1つ。
targetその中で新しい位置を見つけるための UTF8View


議論


以下の例では、文字列の utf16 ビュー内の空白の位置を見つけて、その位置を文字列の utf8 ビュー内のインデックスに変換します。


let cafe = "Café 🍵"

let utf16Index = cafe.utf16.firstIndex(of: 32)!
let utf8Index = String.UTF8View.Index(utf16Index, within: cafe.utf8)!

print(Array(cafe.utf8[..<utf8Index]))
// Prints "[67, 97, 102, 195, 169]"


utf16Index で渡された位置が utf8 で正確に対応する位置を持っていない場合、イニシャライザの結果は nil です。 たとえば、UTF-8 と UTF-16 は異なる 高い Unicode コードポイントを表すため、UTF-16 代替ペアの末尾の代替の位置を変換しようとしても失敗します。


以下の例では、ティーカップの絵文字 ("🍵") を表す 2 つの UTF-16 コードポイントのインデックスを変換しようとします。先行する代替のインデックスは、utf8 内の位置に正常に変換されますが、後続する代替のインデックスは正しく変換されません。


let emojiHigh = cafe.utf16.index(after: utf16Index)
print(String.UTF8View.Index(emojiHigh, within: cafe.utf8))
// Prints "Optional(String.Index(...))"

let emojiLow = cafe.utf16.index(after: emojiHigh)
print(String.UTF8View.Index(emojiLow, within: cafe.utf8))
// Prints "nil"

















トップへ












トップへ












トップへ












トップへ
目次
Xcode の新機能

  • 言語:Swift
  • SDK
  • Xcode 9.0+
  • Framework
  • Swift 標準ライブラリ
  • 宣言
  • パラメータ
  • 議論












  • トップへ(Swift 標準ライブラリ)












    トップへ(Swift 標準ライブラリ)












    トップへ(Swift 標準ライブラリ)












    トップへ(Swift 標準ライブラリ)












    トップへ(Swift 標準ライブラリ)












    トップへ(Swift 標準ライブラリ)












    トップへ(Swift 標準ライブラリ)












    トップへ(Swift 標準ライブラリ)












    トップへ(Swift 標準ライブラリ)












    トップへ(Swift 標準ライブラリ)












    トップへ(Swift 標準ライブラリ)












    トップへ(Swift 標準ライブラリ)












    トップへ(Swift 標準ライブラリ)












    トップへ(Swift 標準ライブラリ)












    トップへ(Swift 標準ライブラリ)












    トップへ(Swift 標準ライブラリ)












    トップへ(Swift 標準ライブラリ)












    トップへ(Swift 標準ライブラリ)












    トップへ(Swift 標準ライブラリ)












    トップへ(Swift 標準ライブラリ)