【问题标题】:How can I search for and remove an escaped character from an NSString?如何从 NSString 中搜索和删除转义字符?
【发布时间】:2013-10-18 06:24:37
【问题描述】:

我正在从磁盘上的源文件中读取一行代码,该行是一个字符串,它是一个包含 HTML 代码的字符串:

line = @"format = @"<td width=\"%@\">";"

我需要从 html 字符串中删除转义字符。所以任何有'\"'的地方,我都需要用''替换它。我试过这个:

[line stringByReplacingOccurrencesOfString:@"\\""" withString:@""];

但它只删除了 '\' 字符,而不是随附的 '"'。如何从该字符串中删除转义的 '"'?

编辑:这个问题的关键部分是我需要找出一种方法来识别第一个 @" 的位置,以及字符串声明的结束 ",并忽略/删除其他所有内容。如果有更好的方法来实现这一点,我会全力以赴。

【问题讨论】:

  • 斜线不是字符串的一部分;它只存在于文字代码中,以便编译器知道它后面的" 不会结束字符串。您无法删除 \,因为它实际上并不存在。
  • 我的应用程序的目的是评估代码文件。当我从文件中读取字符串时,\ 就在那里。所以我确实有一个看起来像上面的字符串:@"format = @"";"
  • 哦,好吧。所以你想用“双引号”替换“斜线后跟双引号”?还是完全去掉这两个?恐怕这个问题的性质使您的问题有点难以阅读。
  • 对不起。是的,我想用任何内容替换“斜线后跟双引号”。我想删除它。我会再次尝试编辑问题。
  • 这不是你的错;自然很难将这种结构标记起来,也很难区分您输入的是双引号还是两个单引号不包含任何内容。

标签: ios objective-c cocoa-touch nsstring escaping


【解决方案1】:
[s stringByReplacingOccurrencesOfString:@"\\\"" withString:@""]

替换字符串有一个斜杠,必须在文字替换字符串中使用另一个斜杠进行转义,然后是引号,在文字中也必须通过斜杠进行转义。

【讨论】:

  • 完美。感谢您的帮助!
【解决方案2】:

试试这个:

NSString *unfilteredString = @"!@#$%^&*()_+|abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890";
NSCharacterSet *notAllowedChars = [[NSCharacterSet characterSetWithCharactersInString:@"abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"] invertedSet];
NSString *resultString = [[unfilteredString componentsSeparatedByCharactersInSet:notAllowedChars] componentsJoinedByString:@""];
NSLog (@"Result: %@", resultString);

【讨论】:

    猜你喜欢
    相关资源
    最近更新 更多
    热门标签