【问题标题】:Remove & character from string objective c从字符串目标 c 中删除 & 字符
【发布时间】:2010-02-25 15:20:03
【问题描述】:

我将如何从字符串中删除“&”符号。它使我的 xml 解析器失败。

我试过了

[currentParsedCharacterData setString: [currentParsedCharacterData stringByReplacingOccurrencesOfString:@"&" withString:@"and"]];

但是好像没有效果

【问题讨论】:

  • 哇。在正确的 XML 中,您应该将它们替换为 &
  • currentParsedCharacterData 到底是哪个类的实例?你能在这一行显示更多代码吗?
  • 感谢大家的回复。我采取了懒惰的方式,甚至在它到达 xml 之前就对 & 字符服务器端进行了核对

标签: objective-c string illegal-characters


【解决方案1】:

真正归结为您想要优雅地处理无效的 XML。 XML Parser 正确地告诉您此 XML 无效,因此无法解析。假设您无法控制此 XML 内容,我建议您针对此类常见错误对其进行预解析,其输出将是经过清理的 XML 文档,成功几率更高。

要清理文档,它可能就像搜索和替换一样简单,仅对任何 & 进行全面替换的问题是 & 的有效用途,例如 & 或 @ 987654326@。你最终会通过创建类似这样的东西来修改 XML:andcopy;

您可以搜索“& 号空格”,但这不会捕获以 & 号作为最后一个字符的字符串(可能很容易处理的一种情况)。您真正要搜索的是& 的出现,其后没有;,或者在; 之前遇到任何类型的空格,因为分号本身就可以。

如果您因为需要检测此错误和其他错误而需要更多功能,我建议您转到NSScannerRegEx 匹配以在您的清理步骤中搜索此错误和其他常见错误的发生情况。 XML 文件相当大的情况也很常见,因此在将它们作为内存中的字符串处理时需要小心,因为这很容易导致应用程序崩溃。将其分解为可管理的块是 NSScanner 可以做得很好的事情。

【讨论】:

    【解决方案2】:

    如需快速尝试,请查看NSString 上的 stringByReplacingOccurrencesOfString

    NSString* str = @"a & b";
    [str stringByReplacingOccurrencesOfString:@"&" withString:@"and"]; // better replace by &
    

    但是,您还应该处理其他字符,即

    【讨论】:

      猜你喜欢
      • 2022-01-09
      • 2011-12-10
      • 1970-01-01
      • 1970-01-01
      • 2017-02-14
      • 2013-10-08
      相关资源
      最近更新 更多