问题描述
我想把字符串“pqtd”替换为“\n”,我的代码是:
String str = "this is my pqtd string";
if (str.contains("pqtd")) {
str.replaceAll("pqtd","\n");
}
但这不行,如果我更改所有代码,反向执行(尝试将“\n”替换为“pqtd”)它会发生,所以我认为问题是Java无法替换字符序列到“\n”,至少我不知道。
解决方法
存在多个问题:
-
您检查您的字符串是否包含
"pqtd"
,然后尝试替换未出现在您的字符串中任何位置的"dtdpq"
。我真的不确定额外的“d”和“q”来自哪里。 -
您正在使用
replaceAll
方法,该方法将正则表达式作为第一个参数。由于您想替换文字字符串,因此您不需要使用正则表达式,只需使用标准的replace
方法即可。 -
字符串是不可变的,不能修改。因此,所有替换选项都不会修改原始字符串,而是将修改后的字符串作为返回值返回。如果您希望 String 发生任何更改,您需要使用该返回值并将您的 String 分配给它。
解决所有这三个问题:
String str = "this is my pqtd string";
if (str.contains("pqtd")) {
str = str.replace("pqtd","\n");
}
System.out.println(str);
哪个将产生预期的输出
这是我的
字符串