在NSString中转义字符如newline和double-quote的最佳方法

dre*_*lax 10 string macos cocoa

假设我有一个NSString(或NSMutableString)包含:

I said "Hello, world!".
He said "My name's not World."
Run Code Online (Sandbox Code Playgroud)

将其转化为以下内容的最佳方法是:

I said \"Hello, world!\".\nHe said \"My name\'s not World.\"
Run Code Online (Sandbox Code Playgroud)

我是否必须手动使用-replaceOccurrencesOfString:withString:一遍又一遍来转义字符,还是有更简单的方法?这些字符串可能包含其他字母/语言的字符.

如何在其他语言中使用其他字符串类完成此操作?

小智 5

stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding


dan*_*ass 4

我认为没有任何内置方法可以“转义”特定的字符集。

如果您希望转义的字符定义明确,我可能会坚持使用您提出的简单解决方案,粗略地替换字符的实例。

请注意,如果您的源字符串中已经包含转义字符,那么您可能希望避免“双重转义”它们。实现此目的的一种方法是遍历并“转义”字符串中的任何转义字符串,然后再次转义它们。

如果您需要支持可变的转义字符集,请查看 NSScanner 方法“scanUpToCharactersFromSet:intoString:”和“scanCharactersFromSet:intoString:”。您可以在 NSScanner 上使用这些方法来浏览字符串,将“scanUpTo”部分中的部分不加更改地复制到可变字符串中,并仅在转义后才从特定字符集中复制这些部分。