【问题标题】:How do I replace all "[", "]" and double quotes in Java如何替换Java中的所有“[”,“]”和双引号
【发布时间】:2011-11-28 22:14:11
【问题描述】:

我在使用 replaceAll 方法替换方括号和双引号时遇到了困难。有什么想法吗?

编辑:

到目前为止我已经尝试过:

replace("\[", "some_thing") // returns illegal escape character
replace("[[", "some_thing") // returns Unclosed character class
replace("^[", "some_thing") // returns Unclosed character class

【问题讨论】:

  • 试过 replaceAll("^[", "something"), replaceAll("[", "..."), replace("[", " ")。
  • 您需要向我们展示一个小型测试程序,其中包括一个测试字符串、您的代码以及您获得的结果。
  • 你是用相同的字符串替换它们吗?
  • 你想用什么替换它们?
  • URLEncoder 不起作用,还是什么? stackoverflow.com/questions/8301699/…

标签: java


【解决方案1】:

不要使用replaceAll,使用replace。前者使用正则表达式,[] 是正则表达式中的特殊字符。

String replaced = input.replace("]", ""); //etc

双引号在 Java 中很特殊,因此您需要使用单个反斜杠 ("\"") 对其进行转义。

如果您想使用正则表达式,您需要转义这些字符并将它们放入字符类中。一个字符类被[]包围,转义一个字符是通过在它前面加上一个反斜杠\来完成的。然而,由于反斜杠在 Java 中 也是 特殊的,它也需要被转义,因此要给正则表达式引擎一个反斜杠,您必须使用 两个 反斜杠 (@987654328 @)。

最后它应该是这样的(如果你使用正则表达式):

String replaced = input.replaceAll("[\\[\\]\"]", "");

【讨论】:

    【解决方案2】:

    replaceAll 方法针对Regular Expressions 运行。您可能只是想使用“replace”方法,尽管它的名字,它确实替换了所有出现的地方。

    查看您的编辑,您可能想要:

    someString
    .replace("[", "replacement")
    .replace("]", "replacement")
    .replace("\"", "replacement")
    

    或者,使用适当的正则表达式,如果您愿意学习正则表达式,我实际上会推荐这种方法(有关工作示例,请参阅 Mark Peter 的回答)。

    【讨论】:

      【解决方案3】:

      replaceAll() 采用正则表达式,因此您必须转义特殊字符。如果您不想要所有花哨的正则表达式,请使用replace()

      String s = "[h\"i]";
      System.out.println( s.replace("[","").replace("]","").replace("\"","") );
      

      使用双引号,您必须像这样转义它们:"\""

      【讨论】:

        【解决方案4】:

        在java中:

        String resultString = subjectString.replaceAll("[\\[\\]\"]", "");
        

        这会将[]" 替换为空。

        【讨论】:

        • 但是,它将按该顺序完全替换 []"。它不会替换每个字符的单独出现。
        • @MarkPeters Oups.. 我想已经很晚了 :)
        【解决方案5】:

        或者,如果您希望将"[] 替换为不同的字符(而不是全部替换为空字符串),您可以使用StringUtils 类中的replaceEachRepeatedly() 方法@987654322 @。

        例如,

        String input = "abc\"de[fg]hi\"";
        String replaced = StringUtils.replaceEachRepeatedly(input, 
            new String[]{"[","]","\""}, 
            new String[]{"<open_bracket>","<close_bracket>","<double_quote>"});
        System.out.println(replaced);
        

        打印以下内容:

        abc<double_quote>de<open_bracket>fg<close_bracket>hi<double_quote>
        

        【讨论】:

          猜你喜欢
          • 2013-04-15
          • 2012-01-01
          • 1970-01-01
          • 2023-01-18
          • 2011-07-18
          • 2012-01-02
          • 1970-01-01
          • 2021-10-03
          • 2015-10-04
          相关资源
          最近更新 更多