【问题标题】:Character Replacement in a String in JavaJava中字符串中的字符替换
【发布时间】:2012-06-27 05:31:10
【问题描述】:

目前,我有一个字符串数组,每个字符串中都有长度随机的随机字符。我想用“X”替换每个“A”,我该怎么做?

例子:

String str = "ABCDEFGAZYXW";

我希望字符串变为"XBCDEFGXZYXW"。我尝试使用:

str.replaceAll("A", "X");

但它不会改变字符串。非常感谢任何帮助!

【问题讨论】:

    标签: java string character replace


    【解决方案1】:

    str = str.replaceAll("A", "X");

    replaceAll 方法不会更改字符串(Java 中的字符串是不可变的),但会创建一个新的String 对象并将其作为函数调用的结果返回。通过这种方式,我们更改了对新对象的引用,而旧对象没有更改,只是没有被引用。

    【讨论】:

      【解决方案2】:

      Java 中的字符串是不可变的,使用 replaceAll() 是正确的,但您必须将方法返回的新字符串保存在某处,例如在原始字符串中(如果你不介意修改它)。我的意思是:

      String str = "ABCDEFGAZYXW";
      str = str.replaceAll("A", "X"); // notice the assignment!
      

      【讨论】:

        【解决方案3】:

        如果只是用另一个字符替换单个字符,您可以使用replace

        str = str.replace('A', 'X');
        

        正如许多其他人已经发布的那样,String.replaceAll 也可以使用,但您应该注意,此方法的第一个参数是正则表达式。如果您没有意识到这一点,那么它可能无法在所有情况下都按您预期的那样工作:

        // Replace '.' with 'X'.
        str = str.replaceAll(".", "X"); // Oops! This gives "XXXXXXXXXXXX"
        

        【讨论】:

        • 供参考,如果您想替换“。”使用“X”,str = str.replaceAll("\\.", "X"); 会这样做。正则表达式喜欢他们的标点符号在它前面有反斜杠,如果你想按字面意思理解(而不是作为元字符,如“.”表示“任何字符”或“$”表示“行尾”)。
        【解决方案4】:

        你必须分配结果,即:

        str = str.replaceAll("A", "X");
        

        【讨论】:

          【解决方案5】:

          试试 str = str.replaceAll("A", "X");

          字符串在 Java 中是不可变的。

          【讨论】:

            【解决方案6】:

            replaceAll函数基本上有两个参数,一个是要删除的字符串,第二个是要替换的新字符串,返回类型是String。

            替换后会返回新的字符串。

            在这里,您调用了该方法,但未将其新值存储在变量中。 你可以像这样替换或打印它

            String string = "My Old String with Old value";
            System.out.println(string.replaceAll("Old", "New"));
            //Or
            string = string.replaceAll("Old", "New");
            System.out.println(string);
            

            所以在你的代码中你应该把它存储到你的字符串对象中。

            str = str.replaceAll("A", "X");
            

            【讨论】:

              猜你喜欢
              • 2015-12-23
              • 1970-01-01
              • 2013-07-09
              • 2015-05-01
              • 1970-01-01
              • 2021-01-27
              • 2023-03-25
              • 1970-01-01
              • 1970-01-01
              相关资源
              最近更新 更多