IOS/SWIFT库提供包含以空结尾的字符串的Data对象. 当通过调用String(data: dataInstance, encoding: .utf8)将其转换为String时,返回的String"\0"结尾. 现在的问题是,如何在不附加"\0"的情况下将Data实例转换为String?也就是说,如何省略结尾的空终止字符?

试着减到.trimmingCharacters(in: .whitespacesAndNewlines)不会有任何效果,所以我们非常感谢你的建议.谢谢.

推荐答案

一种可能的解决方案是:确定终止零的索引,并仅转换数据的前一部分:

let data = Data([65, 66, 0, 67, 0])
let end = data.firstIndex(where: { $0 == 0 }) ?? data.endIndex
if let string = String(data: data[..<end], encoding:.utf8) {
    print(string.debugDescription) // "AB"
}

如果数据不包含空字节,则将转换所有内容.

Swift相关问答推荐

在Swift中initt()完成后运行一个函数

如何取消正在视图修改器中运行的任务

如何增加 NSStatusBar 图像大小?

在Swift中如何将NSUrl转换为本地路径URL

如何在 switch case 模式语句中使用 Swift 文字正则表达式?

使用 Async-Await 和 Vapor-Fluent 创建 CRUD 函数 - Swift 5.6

如何更新 UserDefault 中的特定值

为什么 Apple Scrumdinger Sample App 使用两个事实来源?

带有屏幕参数的 NSWindow 初始化程序在初始化时导致致命错误

RxSwift:share() 替代方案,保证upstream 的单一订阅

如何从 LLDB 调用带有断点的 Swift 函数?

Swift:连接两个数组而不重复共享后缀/前缀

使用自定义相机拍照 iOS 11.0 Swift 4. 更新错误

AES 加密和解密

使用 Alamofire 4.0 (Swift 3) 下载文件

在 Swift 中计算两个日期之间的差异

Xcode 6 中的嵌入式内容包含 Swift 代码构建设置有什么作用?

Swiftwhere数组扩展

如何从 Swift 中的字符串生成条形码?

<<错误类型>> 奇怪的错误