Java String.trim()将删除多少空格?
在Java中,我有这样一个字符串:Java String.trim()将删除多少空格?,java,string,trim,Java,String,Trim,在Java中,我有这样一个字符串: " content ". 将String.trim()删除这些边上的所有空格或每个边上只有一个空格?将删除两侧的所有空格。trim()将删除所有前导空格和尾随空格。但是请注意:您的字符串没有更改trim()将返回一个新的字符串实例。 返回: 删除了前导和尾随空格的此字符串的副本,如果没有前导或尾随空格,则为此字符串的副本 ~引自Java 1.5.0文档 (但是你为什么不自己试试看呢?Trim()对双方都有效。源代码(反编译): 公共字符串修剪
" content ".
将
String.trim()
删除这些边上的所有空格或每个边上只有一个空格?将删除两侧的所有空格。trim()
将删除所有前导空格和尾随空格。但是请注意:您的字符串没有更改trim()
将返回一个新的字符串实例。
返回:
删除了前导和尾随空格的此字符串的副本,如果没有前导或尾随空格,则为此字符串的副本
~引自Java 1.5.0文档
(但是你为什么不自己试试看呢?Trim()对双方都有效。源代码(反编译):
公共字符串修剪()
{
int i=这个计数;
int j=0;
int k=这个偏移量;
char[]arrayOfChar=this.value;
当((j
@Test
public void trimRemoveAllBlanks(){
assertThat(" content ".trim(), is("content"));
}
NB:当然测试(对于JUnit+Hamcrest)不会失败请参见字符串类:
返回字符串的副本,并省略前导和尾随空格
删除两侧的空白:
请注意,trim()
不会更改字符串实例,它将返回一个新对象:
String original = " content ";
String withoutWhitespace = original.trim();
// original still refers to " content "
// and withoutWhitespace refers to "content"
for字符串包含所有详细信息。删除空白(空格、制表符等)从两端返回一个新字符串。如果您想检查某个方法的作用,您可以使用。这是一种脚本语言,旨在尽可能接近Java。一般来说,它被解释为Java,有一些放松。这种语言的另一个选项是language。这两种脚本语言都提供了方便的读取和评估int循环从解释语言中了解。因此,您可以运行控制台并键入:
" content ".trim();
在Groovy控制台中按Enter键(或Ctrl+R键)后,您将看到“content”
。需要指出的是,String.trim有一个特殊的“空白”定义它不删除Unicode空白,但也删除了可能不考虑空白的ASCII控制字符。
此方法可用于从字符串的开头和结尾修剪空白;事实上,它还修剪所有ASCII控制字符
如果可能的话,您可能希望使用Commons Lang的StringUtils.strip(),它也处理Unicode空白(并且也是空安全的)。一个非常重要的事情是,完全由“空白”组成的字符串将返回空字符串
如果字符串sSomething=“xxxxx”
,其中x
代表空格,sSomething.trim()
将返回空字符串
如果字符串sSomething=“xxAxx”,其中x
代表空格,sSomething.trim()
将返回a
如果sSomething=“xxSomethingxxxxAndSomethingxElsexxx”
,sSomething.trim()
将返回somethingxxandsomethingxelse
,请注意单词之间的x
的数量不会改变
如果您想要一个整洁的打包字符串,请将trim()
与正则表达式组合,如本文所示:
顺序对于结果来说毫无意义,但是trim()
首先会更有效。希望它能有所帮助。来自java文档(字符串类源代码)
String formattedStr=unformattedStr;
formattedStr=formattedStr.trim().replaceAll("\\s+", " ");
public static String trim(char [] input){
char [] output = new char [input.length];
int j=0;
int jj=0;
if(input[0] == ' ' ) {
while(input[jj] == ' ')
jj++;
}
for(int i=jj; i<input.length; i++){
if(input[i] !=' ' || ( i==(input.length-1) && input[input.length-1] == ' ')){
output[j]=input[i];
j++;
}
else if (input[i+1]!=' '){
output[j]=' ';
j++;
}
}
char [] m = new char [j];
int a=0;
for(int i=0; i<m.length; i++){
m[i]=output[a];
a++;
}
return new String (m);
}
请注意,在获得start和length之后,它调用String类的substring方法。基于Java文档,.trim()
替换了通常称为空白的“\u0020”
但请注意,“\u00A0”(
)也被视为空白,并且.trim()
不会删除此项。这在HTML中尤其常见
要删除它,我使用:
tmpTrimStr = tmpTrimStr.replaceAll("\\u00A0", "");
讨论了此问题的一个示例。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);
}
}
输出
old =
This is a String.
new = This is a String.
要仅为字符串保留一个实例,可以使用以下命令
str = " Hello ";
或
如果字符串输入为:
String a = " abc ";
System.out.println(a);
String b = " This is a test "
System.out.println(b);
是的,输出为“abc”;
但如果字符串输入为:
String a = " abc ";
System.out.println(a);
String b = " This is a test "
System.out.println(b);
输出将是这是一个测试
所以trim只删除字符串中第一个字符之前和最后一个字符之后的空格,而忽略内部空格。
这是我的一段代码,它稍微优化了内置的String
trim方法,删除了字符串中第一个和最后一个字符之前和之后的空格,希望能有所帮助
String formattedStr=unformattedStr;
formattedStr=formattedStr.trim().replaceAll("\\s+", " ");
public static String trim(char [] input){
char [] output = new char [input.length];
int j=0;
int jj=0;
if(input[0] == ' ' ) {
while(input[jj] == ' ')
jj++;
}
for(int i=jj; i<input.length; i++){
if(input[i] !=' ' || ( i==(input.length-1) && input[input.length-1] == ' ')){
output[j]=input[i];
j++;
}
else if (input[i+1]!=' '){
output[j]=' ';
j++;
}
}
char [] m = new char [j];
int a=0;
for(int i=0; i<m.length; i++){
m[i]=output[a];
a++;
}
return new String (m);
}
公共静态字符串修剪(char[]输入){
char[]输出=新字符[input.length];
int j=0;
int jj=0;
如果(输入[0]=''){
while(输入[jj]='')
jj++;
}
对于(int i=jj;iTo the downvorters:你的行为是居高临下的。这个问题详细而具体,写得清楚而简单,至少有一个其他程序员对它感兴趣。人们可能不知道在哪里可以找到javadoc或源代码。我们的工作是帮助他们,而不是抨击他们的无知。@subtenate,你是correct.我以前甚至为问谷歌问题的人辩护过。然而,像这样简单的问题应该自己测试,而且IMO永远不应该保证在问答网站上发布问题。标题是误导性的,对于所有阅读它的人来说,Q是浪费时间。@Chris:oneat给了我查看源代码的机会。我学会了d关于trim()有很多。否则我就不会有了。每个人都要为自己的时间花费负责。我们不能因为我们不能从他看似天真的问题中获利而责怪oneat。@skaffman:(c)应该是“试试看”,只有到那时(d)这样问吧。这个问题似乎离题了,因为它是关于任何人都应该能够在手册中找到并在一分钟内测试的东西。事实上,没有什么可以改变这个问题