想要在Java String上进行左右修剪

Vij*_*jay 9 java

我有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)

  • 我不知道这是怎么被投票的.只需运行此测试用例:`public class Test {public static void main(String [] args){String abc ="Amebiasis"; System.out.println(">"+ abc.trim()+"<"); 正如文档所说,它清楚地修剪了两边的空白.`javac Test.java`然后`java Test`编译并运行,为n00bs.:d) (4认同)

aga*_*aga 10

我都试过你的函数,ltrimrtrim和他们很好地工作.如果我理解正确,您希望这些函数将更改字符串的内容.这是不可能的,因为Java中的字符串是不可变的.如果您希望修剪字符串中的空格,然后继续使用修剪后的字符串版本,则需要指定值rtrimltrim返回到您的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)


Naz*_*iuk 6

使用正则表达式从两边删除所有空格:

return str.replaceAll("\\s*$", "").replaceAll("^\\s*", "");
Run Code Online (Sandbox Code Playgroud)


Kri*_*jic 5

使用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,replacesplit