情况:JAVA字符串中,显示有空格,正常可以通过正则表达式,或者String.trim()方法去掉,但是有些是不可以的
原因:空格的显示,用的ASCII编码是不一样导致,如果是用空格,TAB键,或者换行符等,都可以用常规方法去除,但是我在前端页面中,抓到的了 (牛逼空格),没错就是它,然后正则和String.trim(),replaceAll("//s*","")等都失效了。
解决:
public class TestSpace {
public static void main(String[] args) throws Exception {
//a中的空格,显示为空格,其实是多个 组成的,所以正常方式,无法替换空格
String a = "18699104747 ";
String b = "12345678977 ";
System.out.println(a.length());
System.out.println(b.length());
//不成功
//a = a.replaceAll("\\s*", "");
b = b.replaceAll("\\s*", "");
System.out.println("a:" + a + "----");
System.out.println("b:" + b + "----");
System.out.println("a长度:" + a.length());
System.out.println("b长度:" + b.length());
//成功
byte bytes[] = {(byte) 0xC2,(byte) 0xA0};
String UTFSpace = new String(bytes,"utf-8");
a = a.replaceAll(UTFSpace, "");
System.out.println("a:" + a + "----");
System.out.println("a长度:" + a.length());
}
}
结果:
16
16
a:18699104747 ----
b:12345678977----
a长度:16
b长度:11
a:18699104747----
a长度:11
参考文章: