【问题标题】:PatternSyntaxException: String.replaceAll() androidPatternSyntaxException: String.replaceAll() android
【发布时间】:2013-05-30 16:04:38
【问题描述】:

我想删除所有 { } 如下:

String regex = getData.replaceAll("{", "").replaceAll("}", "");

但是用日志强制关闭我的应用程序。

java.util.regex.PatternSyntaxException: Syntax error U_REGEX_RULE_SYNTAX

我做错了什么?

【问题讨论】:

  • { 不是有效的正则表达式。

标签: android replace


【解决方案1】:

你需要转义{:

String regex = getData.replaceAll("\\{", "").replaceAll("\\}", "");

【讨论】:

  • 有效,但不需要使用正则表达式来匹配普通字符
【解决方案2】:

大括号用于指定正则表达式中的重复,因此您必须将它们转义。

此外,您还应该考虑一次性删除所有括号,而不是调用两次 replaceAll(String, String)。

String regex = getData.replaceAll("\\{|\\}", "");

【讨论】:

    【解决方案3】:

    对于你想做的事情你不需要使用正则表达式

    您可以改用replace 方法来匹配特定的字符,这增加了可读性

    String regex = getData.replace("{", "").replace("}", "");
    

    转义 \\{ 只是为了能够使用 replaceAll 有效,但在您的情况下没有意义

    【讨论】:

      猜你喜欢
      • 2013-10-29
      • 2015-09-19
      • 2012-12-24
      • 2011-09-23
      • 2016-11-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多