遇到一个头痛的问题,解析不出来这个空格到底是什么空格,字符串str=“123 48 454878”,想要只获取到数字,使用方法str.replace(" “,”");得到结果为“123 48454878”,前面那两坨不是空格吗?
正则表达式中,\s匹配任何空白字符,包括空格、制表符、换页符等等。等价于 [ \f\n\r\t\v]。但是这个空格匹配不了\s。如下:
String str = "123 48 454878";
System.out.println(str.replaceAll("\\s", ""));//结果为123 48454878,只去掉了8和4之间的空格
后来才知道,空格还有其他:
1.不间断空格\u00A0,主要用在office中,让一个单词在结尾处不会换行显示,快捷键ctrl+shift+space ;
2.半角空格(英文符号)\u0020,代码中常用的;
3.全角空格(中文符号)\u3000,中文文章中使用。
使用转换工具,将上面的空格拷入,结果转换为\u3000,所以修改代码:
String str = "123 48 454878";
System.out.println(str.replaceAll("\\u3000", "").replaceAll("\\s", ""));//结果为12348454878