one*_*eat 118 java string trim
在Java中,我有一个像这样的字符串:
" content ".
Run Code Online (Sandbox Code Playgroud)
将String.trim()移除这些侧面上的所有空间或每个空间仅一个空间?
glm*_*ndr 33
从源代码(反编译):
public String trim()
{
int i = this.count;
int j = 0;
int k = this.offset;
char[] arrayOfChar = this.value;
while ((j < i) && (arrayOfChar[(k + j)] <= ' '))
++j;
while ((j < i) && (arrayOfChar[(k + i - 1)] <= ' '))
--i;
return (((j > 0) || (i < this.count)) ? substring(j, i) : this);
}
Run Code Online (Sandbox Code Playgroud)
while你可以看到的两个意思是删除了unicode在开头和结尾的空格字符之下的所有字符.
dfa*_*dfa 27
如有疑问,请编写单元测试:
@Test
public void trimRemoveAllBlanks(){
assertThat(" content ".trim(), is("content"));
}
Run Code Online (Sandbox Code Playgroud)
注意:当然测试(对于JUnit + Hamcrest)并没有失败
Thi*_*ilo 26
但有一点需要指出的是,String.trim有一个奇特的"空白"定义.它不会删除Unicode空格,但也会删除您可能不会考虑空格的ASCII控制字符.
此方法可用于从字符串的开头和结尾修剪空白; 实际上,它也会修剪所有ASCII控制字符.
如果可能,您可能希望使用Commons Lang的StringUtils.strip(),它也处理Unicode空白(并且也是空安全的).
Juh*_*älä 15
请参阅String类的API:
返回字符串的副本,省略前导和尾随空格.
双方的空白被删除:
注意,trim()不会更改String实例,它会返回一个新对象:
String original = " content ";
String withoutWhitespace = original.trim();
// original still refers to " content "
// and withoutWhitespace refers to "content"
Run Code Online (Sandbox Code Playgroud)
Bri*_*itc 13
基于此处的Java文档,.trim()替换'\ u0020',通常称为空格.
但请注意,'\ u00A0'(Unicode NO-BREAK SPACE )也被视为空白,并且.trim()不会删除它.这在HTML中尤为常见.
要删除它,我使用:
tmpTrimStr = tmpTrimStr.replaceAll("\\u00A0", "");
Run Code Online (Sandbox Code Playgroud)
这里讨论了这个问题的一个例子.
Java trim()删除空格的示例:
public class Test
{
public static void main(String[] args)
{
String str = "\n\t This is be trimmed.\n\n";
String newStr = str.trim(); //removes newlines, tabs and spaces.
System.out.println("old = " + str);
System.out.println("new = " + newStr);
}
}
Run Code Online (Sandbox Code Playgroud)
OUTPUT
old =
This is a String.
new = This is a String.
Run Code Online (Sandbox Code Playgroud)