Java 为什么string.replaceAll行为不正常
我一直使用Java 为什么string.replaceAll行为不正常,java,string,Java,String,我一直使用string.replaceAll(),没有任何问题 但现在我被难倒了 这是我的密码 public static String getVersionName() { String versionName = null; versionName = "v"+packageInfo.versionName; versionName = versionName.replaceAll(".","_"); return versionName; } replac
string.replaceAll()
,没有任何问题
但现在我被难倒了
这是我的密码
public static String getVersionName() {
String versionName = null;
versionName = "v"+packageInfo.versionName;
versionName = versionName.replaceAll(".","_");
return versionName;
}
replaceAll之前的版本名为v1.0.4
预期结果为v1\u 0\u 4
实际结果是v\uuuuuuuuuu
或\uuuuuuuuuuuuu
它因某些原因而变化,而且永远不是预期的结果
为什么会这样?如何修复它?这是因为
replaceAll
使用正则表达式
您需要使用“\\”来转义“.”这是因为
replaceAll
使用正则表达式
您需要使用“\\”来转义“.”这是因为
replaceAll
需要一个正则表达式。您可能应该改用replace
(它仍然会替换所有出现的字符),因为您只想匹配单个字符
因此,使用
versionName=versionName.replace('.','')将为您提供v1\u 0\u 4作为结果。这是因为replaceAll
需要一个正则表达式。您可能应该改用replace
(它仍然会替换所有出现的字符),因为您只想匹配单个字符
因此,使用versionName=versionName.replace('.','')因此,v1.0.4上的code>将为您提供v1\u 0\u 4。replaceAll()
使用正则表达式,其中
匹配任何字符
您可以选择转义
,因此它的意思是“再次使用\\。
或者,如果您不需要正则表达式(在本例中不需要),则应该使用replace()
,这样会更快,而且现在不会有两个问题需要解决
replaceAll()
使用正则表达式,其中
匹配任何字符
您可以选择转义
,因此它的意思是“再次使用\\。
或者,如果您不需要正则表达式(在本例中不需要),则应该使用replace()
,这样会更快,而且现在不会有两个问题需要解决
我想换2个characters@LenaBru它仍然会替换该字符的每一次出现,它只使用一个字符作为它试图替换的对象。我想替换2characters@LenaBru它仍然会替换该字符的每一次出现,它只使用一个字符作为它试图替换的对象。
versionName = versionName.replace(".","_");