2

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

例子:

String str = "ABCDEFGAZYXW";

我希望 String 变成"XBCDEFGXZYXW". 我尝试使用:

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

但它不会改变字符串。任何帮助是极大的赞赏!

4

6 回答 6

4

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

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

于 2012-06-25T22:17:20.383 回答
3

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

String str = "ABCDEFGAZYXW";
str = str.replaceAll("A", "X"); // notice the assignment!
于 2012-06-25T22:20:07.467 回答
3

对于仅用另一个字符替换单个字符,您可以使用replace

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

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

// Replace '.' with 'X'.
str = str.replaceAll(".", "X"); // Oops! This gives "XXXXXXXXXXXX"
于 2012-06-25T22:23:50.740 回答
2

您必须分配结果,即:

str = str.replaceAll("A", "X");
于 2012-06-25T22:18:40.070 回答
2

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

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

于 2012-06-25T22:19:00.280 回答
0

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

It will return you new string after replacement.

Here you are calling that method but not storing its new value in variable. you can replace or print it like this

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);

So in your code you should store it into your string object.

str = str.replaceAll("A", "X");
于 2014-12-20T09:08:20.450 回答