在 objective-c 中转义自定义字符

Escaping custom character in objective-c

我正在使用 macOS,而不是 iOS,XCode 11.

我的应用程序允许在特定位置输入文本。这个文本可以是任何东西。完成后,它会导出一个 csv,该文件将传递给我无法影响的外部进程。

问题:外部进程使用分号“;”作为分隔符(csv 的分隔方式不同)。如果用户写入分号,外部进程将失败。 如果我在 csv 的每个分号之前手动添加一个转义反斜杠,然后将其传递给外部应用程序,它就可以工作。

我需要的是:在最终的 csv 中用一个反斜杠转义每个分号

我试过的

  1. 用引号转义整个文本 - 失败
  2. 通过尝试在写入 csv 之前转义 objective-c 中的分号 stringByReplacingOccurrencesOfString(查找 @";" 替换为 @"\;" - 编译器抛出转义字符未知的警告 - 失败

感谢任何帮助

更新: 我也尝试像@Corbell 提到的那样设置双反斜杠,但这导致导出的 CSV 中出现双反斜杠 -> 失败 我还尝试使用其 unicode 字符设置单个反斜杠:

[NSString stringWithFormat:@"%C;",0x5C]; --> "\;"

也失败了,在最终的 CSV 文件中产生了两个反斜杠(我只需要一个)。

在你的 stringByReplacingOccurencesOfString 调用中,第二个参数,尝试用反斜杠转义你的反斜杠,使其成为要插入的文字字符,即 @"\;" - 否则编译器认为你试图指定 @"\;" 作为无效的转义序列(反斜杠分号)。

已解决。正是 CSV 解析器添加了额外的转义字符。一旦解决,它就像一个魅力。