我一直使用string.replaceAll()
没有任何问题。
但现在我只是难倒......
这是我的代码
public static String getVersionName() {
String versionName = null;
versionName = "v"+packageInfo.versionName;
versionName = versionName.replaceAll(".","_");
return versionName;
}
在replaceAll v1.0.4
之前的versionName
预期结果为v1_0_4
实际结果为v____
或_____
它因某种原因而有所不同,并且绝不是预期的结果。
为什么会这样?我该如何解决?
答案 0 :(得分:3)
这是因为replaceAll
使用正则表达式。
你需要逃避“。”使用“\\。”
答案 1 :(得分:1)
这是因为replaceAll
期望正则表达式。您应该使用replace
代替(它仍然替换所有出现的内容),因为您只想匹配单个字符。
因此,在v1.0.4上使用versionName = versionName.replace('.','_');
将为您提供v1_0_4。
答案 2 :(得分:1)
replaceAll()
使用正则表达式,其中.
匹配任何字符。
您的选择是逃避.
所以它只是意味着"。"再次使用\\.
或者,如果你不需要正则表达式(在这种情况下你不是这样),你应该使用replace()
代替,这会更快,你现在不会要解决的两个问题。
versionName = versionName.replace(".","_");