Удалите конец символов строки от конца Строки Java

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

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

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

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

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

9
задан Community 23 May 2017 в 12:15
поделиться

7 ответов

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

Regex объясняется следующим образом:

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

Ссылки


Похожие темы

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

s = s.trim();

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

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

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

Похожие вопросы

16
ответ дан 4 December 2019 в 08:14
поделиться

Не подойдет ли здесь String.trim?

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

3
ответ дан 4 December 2019 в 08:14
поделиться

Язык Apache Commons StringUtils.stripEnd (String str, String stripChars) подойдет; например

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

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

    String trimmed = StringUtils.stripEnd(someString, null);
2
ответ дан 4 December 2019 в 08:14
поделиться

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

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

Benchmark говорит, что он работает ~ в 45 раз быстрее, чем решения с регулярным выражением.

2
ответ дан 4 December 2019 в 08:14
поделиться
String text = "foo\r\nbar\r\nhello\r\nworld\r\n";
String result = text.replaceAll("[\r\n]+$", "");
1
ответ дан 4 December 2019 в 08:14
поделиться
"foo\r\nbar\r\nhello\r\nworld\r\n".replaceAll("\\s+$", "")
or
"foo\r\nbar\r\nhello\r\nworld\r\n".replaceAll("[\r\n]+$", "")
0
ответ дан 4 December 2019 в 08:14
поделиться

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

String result = CharMatcher.any("\r\n").trimTrailingFrom(input);
2
ответ дан 4 December 2019 в 08:14
поделиться
Другие вопросы по тегам:

Похожие вопросы: