我有Java String,左右两边都有空格.我想从两边删除空白区域.
我试过的代码......
public class Test {
public static void main(String args[])
{
String abc = " Amebiasis ";
System.out.println(abc +" length "+abc.length());
System.out.println(rtrim(abc)+" length "+rtrim(abc).length());
System.out.println(ltrim(abc)+" length "+ltrim(abc).length());
String ltrim = abc.replaceAll("^\\s+","");
String rtrim = abc.replaceAll("\\s+$","");
System.out.println("ltrim"+ltrim);
System.out.println("rtrim"+rtrim);
}
public static String rtrim(String s) {
int i = s.length()-1;
while (i >= 0 && Character.isWhitespace(s.charAt(i))) {
i--;
}
return s.substring(0,i+1);
}
public static String ltrim(String s) {
int i = 0;
while (i < s.length() && Character.isWhitespace(s.charAt(i))) {
System.out.println("s.charAt(i) "+s.charAt(i));
i++;
}
return s.substring(i);
}
}
Run Code Online (Sandbox Code Playgroud)
我得到的输出......
Amebiasis length 13
Amebiasis length 11
Amebiasis length 13
ltrim Amebiasis
rtrim Amebiasis
Run Code Online (Sandbox Code Playgroud)
不知何故,它不会删除空白区域.我的代码有什么问题,请帮助我.
new*_*ser 13
默认可用trim()
String abc = " Amebiasis ";
System.out.println(""+abc.trim());
Run Code Online (Sandbox Code Playgroud)
aga*_*aga 10
我都试过你的函数,ltrim并rtrim和他们很好地工作.如果我理解正确,您希望这些函数将更改字符串的内容.这是不可能的,因为Java中的字符串是不可变的.如果您希望修剪字符串中的空格,然后继续使用修剪后的字符串版本,则需要指定值rtrim或ltrim返回到您的abc变量:
String abc = " Amebiasis ";
abc = rtrim(abc); // abc now equals to " Amebiasis"
abc = ltrim(abc); // abc now equals to "Amebiasis"
Run Code Online (Sandbox Code Playgroud)
使用正则表达式从两边删除所有空格:
return str.replaceAll("\\s*$", "").replaceAll("^\\s*", "");
Run Code Online (Sandbox Code Playgroud)
使用Characters类,您可以轻松地向左/向右修剪任何给定字符(-class)的任何字符串:
Characters.valueOf('x').trim( ... )
Characters.valueOf('x').leftTrim( ... )
Characters.valueOf('x').rightTrim( ... )
Run Code Online (Sandbox Code Playgroud)
如果您想修剪空格,可以使用预定义的字符类:
Characters.WHITESPACE.trim( ... )
Characters.WHITESPACE.leftTrim( ... )
Characters.WHITESPACE.rightTrim( ... )
Run Code Online (Sandbox Code Playgroud)
该类还具有其他类型的字符操作,例如condense,replace或split。