zhuangjinxin / study

每日学习笔记
0 stars 0 forks source link

遇到 String.replaceAll() 的一个小坑 #9

Open zhuangjinxin opened 4 years ago

zhuangjinxin commented 4 years ago
String str = "2020.05"; 
String newStr = str.replaceAll(".",""); // 想要去掉字符串中的点(.)
System.out.println("错误结果:" + newStr); // 结果并不是 202005,而是空字符串

// 正确的写法:
newStr = str.replaceAll("\\.",""); // 结果是202005
System.out.println("正确结果:" + newStr);
zhuangjinxin commented 4 years ago

String.replaceAll() 方法源码:

public String replaceAll(String regex, String replacement) {
   return Pattern.compile(regex).matcher(this).replaceAll(replacement);
}

第一个参数:regex ,正则表达式。 点(.) 在正则表达式中表示:匹配除“\n”之外的任何单个字符。 即:匹配到了"2020.05" 中的 2、0、2、0、点(.)、0、5,均被替换成了空字符串"",所以结果为空;