从Java String的末尾删除行尾字符

时间:2010-06-23 09:55:21

标签: java regex string

我有一个字符串,我只想使用Java从字符串的最后删除行尾字符

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

我想成为

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

(这个问题与问题593671类似,但不一样)

7 个答案:

答案 0 :(得分:16)

您可以使用s = s.replaceAll("[\r\n]+$", "");。这会修剪字符串末尾的\r\n字符

正则表达式解释如下:

  • [\r\n]是一个包含\r\n
  • 的字符类
  • +
  • 的一次或多次重复
  • $是字符串结束锚

参考


相关主题

您还可以使用String.trim()从字符串的开头 end 修剪任何空白字符:

s = s.trim();

如果您需要检查String是否只包含空格字符,可以在trim()之后检查if (s.trim().isEmpty()) { //... } 是否isEmpty()

matches

或者您也可以查看它是否为matches("\\s*"),即空白字符的零或更多。请注意,在Java中,正则表达式^\s*$尝试匹配整个字符串。在可以匹配子字符串的风格中,您需要锚定模式,因此它是{{1}}。

相关问题

答案 1 :(得分:3)

String.trim不会在这里耍手段吗?

即你在字符串上调用方法.trim(),它应该返回该字符串的副本减去任何前导或尾随空格。

答案 2 :(得分:2)

Apache Commons Lang StringUtils.stripEnd(String str, String stripChars)将会做到这一点; e.g。

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

如果要删除字符串末尾的所有空格:

    String trimmed = StringUtils.stripEnd(someString, null);

答案 3 :(得分:2)

好吧,每个人都用regex做了一些方法,所以我会尽快给出最快的方式:

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倍。

答案 4 :(得分:2)

如果您的项目中有Google guava-libraries(如果没有,您可以说应该!),您可以使用CharMatcher执行此操作:

String result = CharMatcher.any("\r\n").trimTrailingFrom(input);

答案 5 :(得分:1)

String text = "foo\r\nbar\r\nhello\r\nworld\r\n";
String result = text.replaceAll("[\r\n]+$", "");

答案 6 :(得分:0)

"foo\r\nbar\r\nhello\r\nworld\r\n".replaceAll("\\s+$", "")
or
"foo\r\nbar\r\nhello\r\nworld\r\n".replaceAll("[\r\n]+$", "")