数字类型字符串“trim”和“replaceAll”无法删除最后的空格

时间:2016-03-22 07:43:11

标签: java trim replaceall

我想删除数字类型字符串中的所有空格,我使用了trim()replaceall(" ", "")等函数,但最后一个空格总是关闭。

代码:

String str = " 13554912187 ";
//String str2 = str.replaceAll(" ", "");
String str2 = str.trim();
System.out.println(str);
System.out.println(str.length());
System.out.println(str2);
System.out.println(str2.length());

我想知道原因。

3 个答案:

答案 0 :(得分:2)

确保String.trim()实际上将尾随空格视为空格 - 只有代码小于或等于\u0020的字符才会被视为空格 - 请参阅String.trim() documentation

一些可能的方法来检查:

  • 复制前导空格并用它替换尾随空格(假设前导空格正常)
  • 在十六进制编辑器中打开此输入来自的文件
  • 调试Java应用程序,并查看最后一个空间的String实例中存储的值

答案 1 :(得分:1)

 String str = " 13554912187 ";

修剪前导和尾随空白

    str.trim(); -> "13554912187"

左侧修剪:

    str.replaceAll("^\\s+", ""); -> "13554912187 "

对于正确的修剪:

    str.replaceAll("\\s+$", ""); -> " 13554912187"

不可思议的视觉证据

Visual proof

答案 2 :(得分:-1)

String str2 = str.trim();

trim()方法删除单词前后的空格。

String s=" 45654 65 ";
System.out.println(s.startsWith(" "));
System.out.println(s.endsWith(" "));

s=s.trim();
System.out.println(s.startsWith(" "));
System.out.println(s.endsWith(" "));

输出:

true
true
false
false