You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

iOS开发求助:NSMutableArray中字符串打印反斜杠重复问题

解决NSMutableArray打印时显示双反斜杠的问题

首先得明确:你的字符串myText本身存储的内容是完全正确的,打印数组时出现双反斜杠只是因为NSMutableArray的默认打印方式(description方法)会对字符串里的转义字符进行二次转义展示,并不是实际存储的内容变了。

问题原因拆解

  • 当你直接打印myText时,Swift会直接输出字符串的实际内容,所以看到的是2018\/04\/16(这里的\/是转义后的正斜杠,实际存储的是2018/04/16)。
  • 但当你打印NSMutableArray时,数组会调用每个元素的description方法,对于NSString来说,它的description会把字符串里的转义字符再次转义,所以原本的单个反斜杠会变成两个,用来表示这是一个字面量的反斜杠(虽然你实际要的是转义后的正斜杠)。

解决方案

如果你希望打印数组时能看到"2018/04/16"的结果,可以试试以下几种方式:

1. 遍历数组逐个打印元素

直接遍历数组,单独打印每个字符串,这样就会用Swift的字符串打印逻辑,输出实际内容:

var arr = NSMutableArray()
let myText = "2018\\/04\\/16"
arr = [myText]
// 遍历打印每个元素
for element in arr {
    if let text = element as? String {
        print(text)
    }
}
// 输出:2018/04/16

2. 手动拼接数组的打印内容

自定义数组的输出格式,把每个元素转换成正确的字符串后再拼接:

let customDescription = arr.compactMap { $0 as? String }.joined(separator: ", ")
print("[\(customDescription)]")
// 输出:[2018/04/16]

3. 提前处理字符串(如果不需要转义的话)

如果你的原始字符串不需要保留转义的反斜杠,其实可以直接定义成不带转义的形式:

let myText = "2018/04/16" // 直接用正斜杠,不需要转义
var arr = NSMutableArray(array: [myText])
print(arr)
// 输出:("2018/04/16")

补充说明

永远记住:打印出来的内容只是调试时的展示形式,实际存储在数组里的字符串内容并没有变化。你可以通过访问数组元素并使用字符串操作来验证这一点,比如:

if let storedText = arr.firstObject as? String {
    print(storedText == "2018/04/16") // 输出 true
}

内容的提问来源于stack exchange,提问作者Begineers

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 06:14:05