String.trim() 不仅删除 Java 中的空格
String.trim() removes not only spaces in Java
String.trim() in java 移除所有ascii值小于等于20的字符(space).
知道为什么 Java 这样做而不是只删除 space (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;
}
因为除了“”space字符之外,还有很多不同的方法可以让空space。引用 javadoc:
Returns a copy of the string, with leading and trailing whitespace omitted.
javadoc 在这里很清楚:它不是关于 space 而是 white space。显示为 "empty" 的内容 - 但实际上与普通的 " " 空字符串 不同 。
换句话说:这是一个方便的方法。这些方法旨在提供用户执行的功能 need/expect。
提供仅适用于 space 的 trim()
方法绝对是违反直觉的。
一个非常典型的场景是:你收到一些字符串。它可以由用户输入,可以从文件中读取并代表整行。您对任何尾随制表符、spaces、换行符不感兴趣。因此,Java 语言之父为您提供了一种轻松摆脱所有这些不同字符的方法。而不是你调用 trimSpaces()
、trimTabs()
、trimNewLines()
等。pp.
space的ASCII字符编码实际上是32,而不是20。但是如果你看一下32之前的字符种类,你会发现很多类型的白色space,比如制表符和回车 return。假设是普通用户想要去除字符串周围的所有此类白色space。
为了完善@GhostCat 给出的答案,这里有一个单行代码,您可以使用它来选择性地 trim 仅 space:
String input = " Hello World! ";
input = input.replaceAll("[ ]*(.*)[ ]*", "");
String.trim() in java 移除所有ascii值小于等于20的字符(space).
知道为什么 Java 这样做而不是只删除 space (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;
}
因为除了“”space字符之外,还有很多不同的方法可以让空space。引用 javadoc:
Returns a copy of the string, with leading and trailing whitespace omitted.
javadoc 在这里很清楚:它不是关于 space 而是 white space。显示为 "empty" 的内容 - 但实际上与普通的 " " 空字符串 不同 。
换句话说:这是一个方便的方法。这些方法旨在提供用户执行的功能 need/expect。
提供仅适用于 space 的 trim()
方法绝对是违反直觉的。
一个非常典型的场景是:你收到一些字符串。它可以由用户输入,可以从文件中读取并代表整行。您对任何尾随制表符、spaces、换行符不感兴趣。因此,Java 语言之父为您提供了一种轻松摆脱所有这些不同字符的方法。而不是你调用 trimSpaces()
、trimTabs()
、trimNewLines()
等。pp.
space的ASCII字符编码实际上是32,而不是20。但是如果你看一下32之前的字符种类,你会发现很多类型的白色space,比如制表符和回车 return。假设是普通用户想要去除字符串周围的所有此类白色space。
为了完善@GhostCat 给出的答案,这里有一个单行代码,您可以使用它来选择性地 trim 仅 space:
String input = " Hello World! ";
input = input.replaceAll("[ ]*(.*)[ ]*", "");