結構
String
String.UTF16View
將字符串內容視為 UTF-16 代碼單元集合的視圖。
聲明
@frozen struct UTF16View
概述
您可以使用字符串的utf16
屬性訪問字符串的 UTF-16 代碼單元視圖。字符串的 UTF-16 視圖將字符串的 Unicode 標量值編碼為 16 位整數。
let flowers = "Flowers 💐"
for v in flowers.utf16 {
print(v)
}
// 70
// 108
// 111
// 119
// 101
// 114
// 115
// 32
// 55357
// 56464
構成字符串內容的 Unicode 標量值最長可達 21 位。較長的標量值可能需要兩個 UInt16
值進行存儲。那些 “pairs” 的代碼單元稱為 surrogate pairs
。
let flowermoji = "💐"
for v in flowermoji.unicodeScalars {
print(v, v.value)
}
// 💐 128144
for v in flowermoji.utf16 {
print(v)
}
// 55357
// 56464
要將 String.UTF16View
實例轉換回字符串,請使用 String
類型的 init(_:)
初始化程序。
let favemoji = "My favorite emoji is 🎉"
if let i = favemoji.utf16.firstIndex(where: { $0 >= 128 }) {
let asciiPrefix = String(favemoji.utf16[..<i])!
print(asciiPrefix)
}
// Prints "My favorite emoji is "
UTF16View 元素匹配 NSString 字符
字符串的 utf16
視圖的 UTF-16 代碼單元匹配通過索引 NSString
API 訪問的元素。
print(flowers.utf16.count)
// Prints "10"
let nsflowers = flowers as NSString
print(nsflowers.length)
// Prints "10"
然而,與 NSString
不同,String.UTF16View
不使用整數索引。如果您需要訪問 UTF-16 視圖中的特定位置,請使用 Swift 的索引操作方法。以下示例訪問 flowers
和 nsflowers
字符串中的第四個代碼單元:
print(nsflowers.character(at: 3))
// Prints "119"
let i = flowers.utf16.index(flowers.utf16.startIndex, offsetBy: 3)
print(flowers.utf16[i])
// Prints "119"
盡管 Swift 覆蓋更新了許多 Objective-C 方法以返回本機 Swift 索引和索引範圍,但有些仍然返回 NSRange
的實例。要將 NSRange
實例轉換為 String.Index
的範圍,請使用 Range(_:in:)
初始化程序,它將 NSRange
和字符串作為參數。
let snowy = "❄️ Let it snow! ☃️"
let nsrange = NSRange(location: 3, length: 12)
if let range = Range(nsrange, in: snowy) {
print(snowy[range])
}
// Prints "Let it snow!"
可用版本
iOS 8.0+, iPadOS 8.0+, macOS 10.10+, Mac Catalyst 13.0+, tvOS 9.0+, watchOS 2.0+
相關用法
- Swift String.UTF16View firstIndex(where:)用法及代碼示例
- Swift String.UTF16View last(where:)用法及代碼示例
- Swift String.UTF16View flatMap(_:)用法及代碼示例
- Swift String.UTF16View min(by:)用法及代碼示例
- Swift String.UTF16View shuffled(using:)用法及代碼示例
- Swift String.UTF16View min()用法及代碼示例
- Swift String.UTF16View isEmpty用法及代碼示例
- Swift String.UTF16View indices用法及代碼示例
- Swift String.UTF16View map(_:)用法及代碼示例
- Swift String.UTF16View.Iterator next()用法及代碼示例
- Swift String.UTF16View lexicographicallyPrecedes(_:)用法及代碼示例
- Swift String.UTF16View index(_:offsetBy:)用法及代碼示例
- Swift String.UTF16View description用法及代碼示例
- Swift String.UTF16View reduce(into:_:)用法及代碼示例
- Swift String.UTF16View firstIndex(of:)用法及代碼示例
- Swift String.UTF16View allSatisfy(_:)用法及代碼示例
- Swift String.UTF16View enumerated()用法及代碼示例
- Swift String.UTF16View reversed()用法及代碼示例
- Swift String.UTF16View first(where:)用法及代碼示例
- Swift String.UTF16View starts(with:)用法及代碼示例
- Swift String.UTF16View prefix(upTo:)用法及代碼示例
- Swift String.UTF16View suffix(from:)用法及代碼示例
- Swift String.UTF16View filter(_:)用法及代碼示例
- Swift String.UTF16View dropFirst(_:)用法及代碼示例
- Swift String.UTF16View shuffled()用法及代碼示例
注:本文由純淨天空篩選整理自apple.com大神的英文原創作品 String.UTF16View。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。