类型方法
decode
decodeCString(_:as:repairingInvalidCodeUnits:)
通过使用指定的编码复制给定指针引用的以 null 结尾的数据来创建一个新字符串。
声明
static func decodeCString<Encoding>(
_ cString: UnsafePointer<Encoding.CodeUnit>?,
as encoding: Encoding.Type,
repairingInvalidCodeUnits isRepairing: Bool = true) -> (result: String, repairsMade: Bool
)? where Encoding : _UnicodeEncoding
返回值
带有新字符串和布尔值的元组,指示是否进行了任何修复。如果 isRepairing
是 false
并且检测到 ill-formed 序列,则此方法返回 nil
。
参数
cString
指向在
encoding
中编码的空终止代码序列的指针。encoding
cString
引用的数据的 Unicode 编码。isRepairing
传递
true
以创建新字符串,即使cString
引用的数据包含 ill-formed 序列。 Ill-formed 序列被替换为 Unicode 替换字符 ("\u{FFFD}"
)。如果检测到 ill-formed 序列,则传递false
以中断新字符串的创建。
详述
当您将 true
作为 isRepairing
传递时,此方法将 ill-formed 序列替换为 Unicode 替换字符 ("\u{FFFD}"
);否则,ill-formed 序列会导致此方法停止解码并返回 nil
。
下面的示例使用指向两个不同 CChar
数组内容的指针调用此方法——第一个具有格式良好的 UTF-8 代码单元序列,第二个在末尾具有 ill-formed 序列。
let validUTF8: [UInt8] = [67, 97, 102, 195, 169, 0]
validUTF8.withUnsafeBufferPointer { ptr in
let s = String.decodeCString(ptr.baseAddress,
as: UTF8.self,
repairingInvalidCodeUnits: true)
print(s)
}
// Prints "Optional((result: "Café", repairsMade: false))"
let invalidUTF8: [UInt8] = [67, 97, 102, 195, 0]
invalidUTF8.withUnsafeBufferPointer { ptr in
let s = String.decodeCString(ptr.baseAddress,
as: UTF8.self,
repairingInvalidCodeUnits: true)
print(s)
}
// Prints "Optional((result: "Caf�", repairsMade: true))"
可用版本
iOS 8.0+, iPadOS 8.0+, macOS 10.10+, Mac Catalyst 13.0+, tvOS 9.0+, watchOS 2.0+
相关用法
- Swift String dropLast(_:)用法及代码示例
- Swift String dropFirst(_:)用法及代码示例
- Swift String init()用法及代码示例
- Swift String init(_:radix:uppercase:)用法及代码示例
- Swift String init(cString:)用法及代码示例
- Swift String suffix(from:)用法及代码示例
- Swift String removeAll(where:)用法及代码示例
- Swift String ...(_:_:)用法及代码示例
- Swift String last用法及代码示例
- Swift String contains(where:)用法及代码示例
- Swift String prefix(through:)用法及代码示例
- Swift String contains(_:)用法及代码示例
- Swift String firstIndex(where:)用法及代码示例
- Swift String init(reflecting:)用法及代码示例
- Swift String first用法及代码示例
- Swift String lowercased()用法及代码示例
- Swift String first(where:)用法及代码示例
- Swift String removeFirst(_:)用法及代码示例
- Swift String removeFirst()用法及代码示例
- Swift String last(where:)用法及代码示例
- Swift String sorted()用法及代码示例
- Swift String removeSubrange(_:)用法及代码示例
- Swift String init(stringLiteral:)用法及代码示例
- Swift String flatMap(_:)用法及代码示例
- Swift String lexicographicallyPrecedes(_:)用法及代码示例
注:本文由纯净天空筛选整理自apple.com大神的英文原创作品 String decodeCString(_:as:repairingInvalidCodeUnits:)。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。