Убрать начальные и конечные пробелы из строки Java


278

Есть ли удобный метод для удаления начальных или конечных пробелов из строки Java?

Что-то вроде:

String myString = "  keep this  ";
String stripppedString = myString.strip();
System.out.println("no spaces:" + strippedString);

Результат:

no spaces:keep this

myString.replace(" ","") заменил бы пространство между крепостью и этим.


7
К сожалению, это означает, что ответы здесь были полезны для людей. Я проголосовал только по этой причине.
Алекс Д

11
Хотя это может быть дубликатом, этот вопрос гораздо лучше представлен. Во всяком случае, другой должен быть близко как дубликат этого.
Thecoshman

1
Я переключил дубликаты, потому что у этого Q & A есть намного больше представлений и фаворитов, и другой Q & A - фактически вопрос отладки.
Radiodef

1
Сделал ответ с решением от JDK / 11 API - String.stripдо этого.
Наман

Ответы:


601

Вы можете попробовать метод trim ().

String newString = oldString.trim();

Посмотрите на Javadocs


1
Работает как обратно совместимая замена для String.strip (11) в Java 11. У меня не было времени исследовать тонкие различия.
Иосия Йодер

80

Используйте String#trim()метод или String allRemoved = myString.replaceAll("^\\s+|\\s+$", "")для обрезки обоих концов.

Для левой обрезки:

String leftRemoved = myString.replaceAll("^\\s+", "");

Для правильной отделки:

String rightRemoved = myString.replaceAll("\\s+$", "");

3
Это дает дополнительное преимущество, заключающееся в том, что можно указывать, сколько начальных / конечных пробелов в строке.
Błażej Czapp


18

trim () - ваш выбор, но если вы хотите использовать replaceметод, который может быть более гибким, вы можете попробовать следующее:

String stripppedString = myString.replaceAll("(^ )|( $)", "");

чем все это заменяет? Может быть пробелы и переводы строк?
Кто-то где-то

Я искал решение, чтобы просто удалить конечные пробелы, но не ведущие пробелы. Я использовал: str.replaceAll ("\\ s * $", "") Спасибо!
Лиза р.

4

В Java-11 и выше вы можете использовать String.stripAPI для возврата строки, значением которой является эта строка, с удалением всех начальных и конечных пробелов. Javadoc для того же гласит:

/**
 * Returns a string whose value is this string, with all leading
 * and trailing {@link Character#isWhitespace(int) white space}
 * removed.
 * <p>
 * If this {@code String} object represents an empty string,
 * or if all code points in this string are
 * {@link Character#isWhitespace(int) white space}, then an empty string
 * is returned.
 * <p>
 * Otherwise, returns a substring of this string beginning with the first
 * code point that is not a {@link Character#isWhitespace(int) white space}
 * up to and including the last code point that is not a
 * {@link Character#isWhitespace(int) white space}.
 * <p>
 * This method may be used to strip
 * {@link Character#isWhitespace(int) white space} from
 * the beginning and end of a string.
 *
 * @return  a string whose value is this string, with all leading
 *          and trailing white space removed
 *
 * @see Character#isWhitespace(int)
 *
 * @since 11
 */
public String strip()

Примеры случаев для них могут быть:

System.out.println("  leading".strip()); // prints "leading"
System.out.println("trailing  ".strip()); // prints "trailing"
System.out.println("  keep this  ".strip()); // prints "keep this"

PS : Миграция ответа здесь на основе комментариев от - stackoverflow.com/questions/3796121/…
Наман


0

Чтобы обрезать определенный символ, вы можете использовать:

String s = s.replaceAll("^(,|\\s)*|(,|\\s)*$", "")

Здесь будут лишены начальные и конечные пробелы и запятые .

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.