Swift使用replacingOccurrences正则替换时\n失效显示为n如何解决?
问题根因
- 你在替换框输入的
\n是两个独立的字面量字符\和n,并非Swift语法中转义后代表换行的控制字符 - 开启
.regularExpression选项后,替换字符串中的\会被识别为正则转义前缀,单独的\会被系统直接丢弃,最终仅保留字符n,因此不会出现换行效果
修复方案
执行正则替换前,先手动将用户输入的替换字符串中的转义序列转换为对应的控制字符即可,修改after计算属性的逻辑如下:
private var after: String { // 预处理替换字符串,转义用户输入的转义序列 let processedReplaceString = replaceString .replacingOccurrences(of: #"\\n"#, with: "\n") // 处理换行转义 .replacingOccurrences(of: #"\\t"#, with: "\t") // 可按需添加制表符等其他转义支持 return before.replacingOccurrences( of: searchString, with: processedReplaceString, options: .regularExpression, range: nil ) }
修改后重新运行,输入相同的正则规则和\n替换内容,即可实现每条目录单独换行的预期效果。
内容的提问来源于stack exchange,提问作者Fedor Boretsky
相关产品推荐
相关产品推荐

