Swift中如何移除字符串数组内的反斜杠转义字符
问题解析与解决方案
为什么打印数组时会出现反斜杠?
你看到的反斜杠并不是字符串实际内容的一部分,只是Swift调试输出的格式而已。当你直接print(tempArray)时,调用的是数组的description方法——这个方法是给开发者看的调试信息,会把字符串里的特殊字符(比如单引号)用转义符标出来,方便你一眼识别字符串中的特殊符号。但单独打印数组元素时,调用的是字符串自身的description,会直接显示原始内容,所以你看到的是test's而不是带反斜杠的版本。
简单说:你的数组里的字符串test's本身完全正常,没有反斜杠,只是调试打印数组时的显示效果让你误以为有。
如何生成合法的JSON字符串存入SQLite?
你不需要手动去“移除”不存在的反斜杠,问题出在你可能打算直接用数组的description作为JSON字符串——这是错误的,因为description只是调试用的格式,不是标准JSON。正确的做法是用Swift自带的序列化工具来生成标准JSON:
方法1:使用Codable(推荐,更简洁)
import Foundation var tempArray = ["test", "one", "test's", "right"] // 序列化数组为JSON数据 do { let jsonData = try JSONEncoder().encode(tempArray) // 转为字符串 if let jsonString = String(data: jsonData, encoding: .utf8) { print(jsonString) // 输出: ["test","one","test's","right"] // 现在可以把jsonString存入SQLite了 } } catch { print("JSON序列化失败: \(error)") }
方法2:使用JSONSerialization
import Foundation var tempArray = ["test", "one", "test's", "right"] do { let jsonData = try JSONSerialization.data(withJSONObject: tempArray, options: []) if let jsonString = String(data: jsonData, encoding: .utf8) { print(jsonString) // 输出标准JSON格式 } } catch { print("JSON序列化失败: \(error)") }
这两种方法生成的都是符合JSON规范的字符串,里面的test's会被正确处理,不会出现多余的反斜杠,完全可以直接存入SQLite数据库。
内容的提问来源于stack exchange,提问作者HappyAppy
相关产品推荐
相关产品推荐

