java中的String.trim()删除ascii值小于或等于20(空格)的所有字符.
知道为什么Java这样做而不是只删除空格(ascii char 20)
public String trim() {
int len = count;
int st = 0;
int off = offset; /* avoid getfield opcode */
char[] val = value; /* avoid getfield opcode */
while ((st < len) && (val[off + st] <= ' ')) {
st++;
}
while ((st < len) && (val[off + len - 1] <= ' ')) {
len--;
}
return ((st > 0) || (len < count)) ? substring(st, len) : this;
}
Run Code Online (Sandbox Code Playgroud)
因为除了那个"空间字符"之外,还有许多不同的方式来拥有空白空间.引用javadoc:
返回字符串的副本,省略前导和尾随空格.
javadoc在这里很清楚:它不是空间而是空白.会显示为"空"的东西 - 但实际上与普通的"空字符串" 不同.
换句话说:这是一种方便的方法.这些方法旨在提供用户确实需要/期望的功能.
提供一种trim()只能工作空间的方法绝对是反直觉的.
一个非常典型的场景是:您收到一些字符串.它可以由用户输入,可以从文件中读取并代表整行.您对任何尾随制表符,空格,换行符都不感兴趣.因此,Java语言的父亲为您提供了一种方法来轻松摆脱所有这些不同的角色.你不用调用trimSpaces(),trimTabs(),trimNewLines(),等页.
| 归档时间: |
|
| 查看次数: |
648 次 |
| 最近记录: |