结构
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。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。