Как удалить начальные и конечные пробелы из строки в Java? - PullRequest
4 голосов
/ 02 февраля 2012

Я хочу удалить начальные и конечные пробелы из строки:

String s = "          Hello World                    ";

Я хочу, чтобы результат был таким:

s == "Hello world";

Ответы [ 9 ]

27 голосов
/ 02 февраля 2012
 s.trim()

см. String # trim ()

Без какого-либо внутреннего метода используйте регулярное выражение, как

 s.replaceAll("^\\s+", "").replaceAll("\\s+$", "")

или

  s.replaceAll("^\\s+|\\s+$", "")

или просто используйте шаблон в чистом виде

    String s="          Hello World                    ";
    Pattern trimmer = Pattern.compile("^\\s+|\\s+$");
    Matcher m = trimmer.matcher(s);
    StringBuffer out = new StringBuffer();
    while(m.find())
        m.appendReplacement(out, "");
    m.appendTail(out);
    System.out.println(out+"!");
3 голосов
/ 02 февраля 2012
String s="Test "; 
s= s.trim();
1 голос
/ 02 февраля 2012

Я предпочитаю не использовать регулярные выражения для тривиальных задач. Это был бы простой вариант:

public static String trim(final String s) {
    final StringBuilder sb = new StringBuilder(s);
    while (sb.length() > 0 && Character.isWhitespace(sb.charAt(0)))
        sb.deleteCharAt(0); // delete from the beginning
    while (sb.length() > 0 && Character.isWhitespace(sb.charAt(sb.length() - 1)))
        sb.deleteCharAt(sb.length() - 1); // delete from the end
    return sb.toString();
}
1 голос
/ 02 февраля 2012
String s="          Hello World                    ";
s = s.trim();

Для получения дополнительной информации См.

1 голос
/ 02 февраля 2012

Используйте метод обрезки класса String.Он удалит все начальные и конечные пробелы.

http://docs.oracle.com/javase/1.5.0/docs/api/java/lang/String.html

0 голосов
/ 07 марта 2019

Просто используйте trim () .Это только устраняет начало и конец лишних пробелов строки.

String fav = "Я люблю яблоко";

fav = fav.trim ();

System.out.println (fav);

Вывод: мне нравится яблоко // нет свободного места в начале и конце строки

0 голосов
/ 05 апреля 2017

Хотя метод @ xehpuk хорош, если вы хотите избежать использования регулярных выражений, он имеет O (n ^ 2) временную сложность. Следующее решение также избегает регулярных выражений, но является O (n):

if(s.length() == 0)
    return "";
char left = s.charAt(0);
char right = s.charAt(s.length() - 1);
int leftWhitespace = 0;
int rightWhitespace = 0;
boolean leftBeforeRight = leftWhitespace < s.length() - 1 - rightWhitespace;

while ((left == ' ' || right == ' ') && leftBeforeRight) {
    if(left == ' ') {
        leftWhitespace++;
        left = s.charAt(leftWhitespace);
    }
    if(right == ' ') {
        rightWhitespace++;
        right = s.charAt(s.length() - 1 - rightWhitespace);
    }

    leftBeforeRight = leftWhitespace < s.length() - 1 - rightWhitespace;
}

String result = s.substring(leftWhitespace, s.length() - rightWhitespace);
return result.equals(" ") ? "" : result;

Это подсчитывает количество конечных пробелов в начале и конце строки, пока не встретятся индексы «влево» и «вправо», полученные из счетчиков пробелов, или пока оба индекса не достигнут непробельного символа. После этого мы либо возвращаем подстроку, полученную с использованием счетчиков пробелов, либо пустую строку, если результатом является пробел (необходим для учета строк со всеми пробелами с нечетным количеством символов).

0 голосов
/ 02 февраля 2012

См. Строка # trim () метод

0 голосов
/ 02 февраля 2012
s = s.trim();

Дополнительная информация: http://docs.oracle.com/javase/7/docs/api/java/lang/String.html#trim()

Почему вы не хотите использовать предопределенные методы?Обычно они наиболее эффективны.

...