Удаление пробелов в конце строки в Java [дубликат]

Возможные Дубликаты:
полоса ведущих и конечных пробелов из строки 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"...

Я хотел бы знать, если есть более эффективный способ сделать это...

5 ответов


можно использовать replaceAll() метод в строке с регулярным выражением \s+$ :

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

если вы хотите удалить только реальные пробелы (не таблицы и не новые строки), замените \s пробел в регулярном выражении.


    String s = "   this has spaces at the beginning and at the end      ";
    String result = s.replaceAll("\s+$", "");

Apache Commons library имеет соответствующий метод stripEnd.


 public static String replaceAtTheEnd(String input){
    input = input.replaceAll("\s+$", "");
    return input;
}

Я бы сделал так:

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);
}

это более подробно, чем использование регулярного выражения, но, вероятно, будет более эффективным.