11

可能重复:
从 Java 字符串中去除前导和尾随空格

当我将数据导入应用程序时,我需要去掉某些字符串末尾的空格,而不是开头的空格,所以我不能使用 trim()... 我设置了一个方法:

public static String quitarEspaciosFinal(String cadena) {
    String[] trozos = cadena.split(" ");
    String ultimoTrozo = trozos[trozos.length-1];
    return cadena.substring(0,cadena.lastIndexOf(ultimoTrozo.charAt(ultimoTrozo.length()-1))+1);
    }

其中 cadena 是我必须转换的字符串...

所以,如果 cadena = " 1234 " 这个方法会返回 " 1234" ...

我想知道是否有更有效的方法来做到这一点......

4

5 回答 5

28

您可以replaceAll()在字符串上使用方法,使用正则表达式\s+$

return cadena.replaceAll("\\s+$", "");

如果您只想删除实际空格(不是制表符也不是新行),请用\\s正则表达式中的空格替换。

于 2012-08-24T09:36:55.167 回答
9
    String s = "   this has spaces at the beginning and at the end      ";
    String result = s.replaceAll("\\s+$", "");
于 2012-08-24T09:42:44.437 回答
9

Apache Commons 库有相应的方法stripEnd

于 2012-08-24T09:57:38.337 回答
6
 public static String replaceAtTheEnd(String input){
    input = input.replaceAll("\\s+$", "");
    return input;
}
于 2012-08-24T09:38:54.613 回答
5

我会这样做:

public static String trimEnd(String s)
{
    if ( s == null || s.length() == 0 )
        return s;
    int i = s.length();
    while ( i > 0 &&  Character.isWhitespace(s.charAt(i - 1)) )
        i--;
    if ( i == s.length() )
        return s;
    else
        return s.substring(0, i);
}

It's way more verbose than using a regular expression, but it's likely to be more efficient.

于 2012-08-24T10:06:35.083 回答