Swift中含双引号的空格分隔字符串拆分异常问题排查
Swift拆分含双引号字符串时的反斜杠问题解答
嘿,这个问题我之前做iOS项目时也踩过坑,其实根本不是你的字符串里真的有反斜杠,是Swift的调试显示机制在搞鬼!
为什么会看到反斜杠?
当你在Xcode控制台打印字符串或者查看变量值时,Swift会自动给字符串内部的特殊字符(比如双引号")加上转义符\——这只是为了帮你区分「字符串本身的边界引号」和「字符串内部的引号」,方便你看懂内容。
比如你在TextField输入的"Add sfc"",实际存储的字符串内容就是Add sfc"",但控制台为了让你清楚知道这两个双引号是字符串的一部分,就会把它们显示成\",所以你看到的["add", "sfc\"\""]只是调试时的可视化展示,真实的数组元素里完全没有\这个字符。
你可以马上验证:打印第二个元素的字符数试试:
print(arrayString[1].count) // 结果应该是5:s+f+c+"+",总共5个字符
如果真的包含反斜杠,字符数会变成7(多了两个\),一测就明白啦。
要不要移除?怎么移除?
绝大多数情况下你完全不需要处理!因为这只是显示问题,实际业务逻辑里用这个字符串时,内部的双引号是正常存在的,不会有反斜杠干扰你的操作。
但如果真的遇到了实际内容里带有转义反斜杠的场景(比如从JSON接口、本地文本文件读取的带转义的字符串),可以用字符串替换来清理:
let cleanedText = arrayString[1].replacingOccurrences(of: "\\\"", with: "\"") // 这样就能把带转义的\"转换成真实的"
总结一下:你看到的反斜杠只是Swift给你的“可视化提示”,不是字符串的真实内容,放心用就行~
内容的提问来源于stack exchange,提问作者Amit
相关产品推荐
相关产品推荐

