【发布时间】:2012-06-27 05:31:10
【问题描述】:
目前,我有一个字符串数组,每个字符串中都有长度随机的随机字符。我想用“X”替换每个“A”,我该怎么做?
例子:
String str = "ABCDEFGAZYXW";
我希望字符串变为"XBCDEFGXZYXW"。我尝试使用:
str.replaceAll("A", "X");
但它不会改变字符串。非常感谢任何帮助!
【问题讨论】:
标签: java string character replace
目前,我有一个字符串数组,每个字符串中都有长度随机的随机字符。我想用“X”替换每个“A”,我该怎么做?
例子:
String str = "ABCDEFGAZYXW";
我希望字符串变为"XBCDEFGXZYXW"。我尝试使用:
str.replaceAll("A", "X");
但它不会改变字符串。非常感谢任何帮助!
【问题讨论】:
标签: java string character replace
str = str.replaceAll("A", "X");
replaceAll 方法不会更改字符串(Java 中的字符串是不可变的),但会创建一个新的String 对象并将其作为函数调用的结果返回。通过这种方式,我们更改了对新对象的引用,而旧对象没有更改,只是没有被引用。
【讨论】:
Java 中的字符串是不可变的,使用 replaceAll() 是正确的,但您必须将方法返回的新字符串保存在某处,例如在原始字符串中(如果你不介意修改它)。我的意思是:
String str = "ABCDEFGAZYXW";
str = str.replaceAll("A", "X"); // notice the assignment!
【讨论】:
如果只是用另一个字符替换单个字符,您可以使用replace:
str = str.replace('A', 'X');
正如许多其他人已经发布的那样,String.replaceAll 也可以使用,但您应该注意,此方法的第一个参数是正则表达式。如果您没有意识到这一点,那么它可能无法在所有情况下都按您预期的那样工作:
// Replace '.' with 'X'.
str = str.replaceAll(".", "X"); // Oops! This gives "XXXXXXXXXXXX"
【讨论】:
str = str.replaceAll("\\.", "X"); 会这样做。正则表达式喜欢他们的标点符号在它前面有反斜杠,如果你想按字面意思理解(而不是作为元字符,如“.”表示“任何字符”或“$”表示“行尾”)。
你必须分配结果,即:
str = str.replaceAll("A", "X");
【讨论】:
试试 str = str.replaceAll("A", "X");
字符串在 Java 中是不可变的。
【讨论】:
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");
【讨论】: