Удалить символы конца строки из конца строки Java - PullRequest
9 голосов
/ 23 июня 2010

У меня есть строка, которую я хотел бы удалить из конца строки в конце строки, используя только Java

"foo\r\nbar\r\nhello\r\nworld\r\n"

которым я бы хотел стать

"foo\r\nbar\r\nhello\r\nworld"

(Этот вопрос похож, но не совпадает с вопросом 593671 )

Ответы [ 7 ]

16 голосов
/ 23 июня 2010

Вы можете использовать s = s.replaceAll("[\r\n]+$", "");.Это обрезает символы \r и \n в конце строки

Регулярное выражение объясняется следующим образом:

  • [\r\n] - это класс символов, содержащий \rи \n
  • + - это одно или несколько повторений
  • $ - привязка конца строки

Ссылки


ПохожиеТемы

Вы также можете использовать String.trim() для обрезки любых пробельных символов от , начиная с и до конца строка:

s = s.trim();

Если вам нужно проверить, не содержит ли String ничего, кроме пробельных символов, вы можете проверить, если isEmpty() после trim():

if (s.trim().isEmpty()) {
   //...
}

В качестве альтернативы вы также можете увидеть, если это matches("\\s*"), то есть ноль или более пробельных символов.Обратите внимание, что в Java регулярное выражение matches пытается соответствовать строке whole .В вариантах, которые могут соответствовать подстроке, необходимо привязать шаблон, чтобы он был ^\s*$.

Связанные вопросы

3 голосов
/ 23 июня 2010

Разве String.trim не справится с этой задачей?

т.е. вы бы вызвали метод .trim() для вашей строки, и он должен вернуть копию этой строки минус любой начальный или конечный пробел.

2 голосов
/ 23 июня 2010

Если в вашем проекте есть guava-библиотеки Google (если нет, возможно, вам следует!), Вы бы сделали это с CharMatcher :

String result = CharMatcher.any("\r\n").trimTrailingFrom(input);
2 голосов
/ 23 июня 2010

Ну, все дали какой-то способ сделать это с помощью регулярных выражений, поэтому я дам вместо этого самый быстрый способ:

public String replace(String val) {
    for (int i=val.length()-1;i>=0;i--) {
        char c = val.charAt(i);
        if (c != '\n' && c != '\r') {
            return val.substring(0, i+1);
        }
    }
    return "";
}

Бенчмарк говорит, что он работает в 45 раз быстрее, чем решения регулярных выражений.

2 голосов
/ 23 июня 2010

Apache Commons Lang StringUtils.stripEnd(String str, String stripChars) сделает свое дело; например,

    String trimmed = StringUtils.stripEnd(someString, "\n\r");

Если вы хотите удалить все пробелы в конце строки:

    String trimmed = StringUtils.stripEnd(someString, null);
1 голос
/ 23 июня 2010
String text = "foo\r\nbar\r\nhello\r\nworld\r\n";
String result = text.replaceAll("[\r\n]+$", "");
0 голосов
/ 23 июня 2010
"foo\r\nbar\r\nhello\r\nworld\r\n".replaceAll("\\s+$", "")
or
"foo\r\nbar\r\nhello\r\nworld\r\n".replaceAll("[\r\n]+$", "")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...