類型方法
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:)。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。