2013-08-16 2 views
2

Я пытаюсь удалить все пробелы и вкладки в конце всех моих строк.Удалить все пространство в конце каждой строки в Java

Я использую следующие методы:

string.replace("\\s+$", ""); 

здесь, "\ s + $" является выражением регулярного выражения

Кажется, это»право. Однако я не исключаю его.

Строка:

   a) AAAAAA.       
      b) BBBBB. 
      c) CCCCCC. 
      d) DDDDD. 
+1

Есть ли причина, по которой вы не можете использовать 'trim()'? – chrylis

+1

Просьба предоставить дополнительную информацию о том, почему вы не использовали trim() – SirRichie

+1

trim также удалить начальные пробелы. Я не хочу этого делать – liangwang

ответ

4

Как это:

string.replaceAll("\\s+$", ""); 
  • String#replace() не принимает регулярное выражение в качестве аргумента.
  • Вы должны удвоиться избежать \s

EDIT: да это не работа:

public static void main(final String[] args) { 
    final String a = "  AAAAAAAA    "; 
    System.out.println(a.replaceAll("\\s+$", "")); 
} 

Может быть, ваша путаница в том, что вы думаете a.replaceAll() модифицирует строку a. Строки в Java неизменяемы (они не могут измениться). a.replaceAll() вернет измененную строку.

EDIT2: Если вы используете многострочную строку, то регулярное выражение должно выполнять задание "\\s+[$\n]".

+0

все еще не работает – liangwang

+0

@liangwang Да, это действительно работает. Я добавил простой пример его работы. – m0skit0

+0

Я думаю, что это не работает для многострочных строк.Попробуйте запустить его с окончательной строкой a = "AAAAA \ n BBBB \ n"; и посмотреть. Богемский действительно работает. – JeroenWarmerdam

3

Используйте replaceAll(), который использует регулярное выражение, чтобы найти его цель, а не replace(), в котором используется обычный текст для своей цели.

str = str.replaceAll("(?m)\\s+$", ""); 

Здесь я добавил (?m) переключатель, который делает караты и долларовый матч до/после переводов строк, которые вы должны сделать его работу с учетом ввода в многострочный.

+1

+1, объясняя почему (? M) делает разницу. – JeroenWarmerdam

+1

+1 для флага, о котором я не знал – m0skit0

-1
Delete all the space at end of each line in Java 

Я думаю, что вам нужен String#trim() метода

использования

string.trim() 

Возвращает копию строки, с передними и задними пробелами опущены.

+1

Trim удаляет пробелы как в начале, так и в конце. – anubhava

+0

Да, я увидел первый пример, который 'a) aaaa' также не выровнен правильно. Я думаю, что это нужно OP. –

Смежные вопросы