如何从字符串的开头和结尾删除换行符(Java)?

Con*_*ure 118 java string line blank-line

我有一个字符串,其中包含一些文本后跟一个空行.保留文本部分的最佳方法是什么,但从末尾删除空白换行符?

Cro*_*zin 262

使用String.trim()方法从字符串的开头和结尾删除空格(空格,换行等).

String trimmedString = myString.trim();
Run Code Online (Sandbox Code Playgroud)

  • 问题是关于换行.这将删除不仅仅是换行符 (11认同)

Joh*_*n B 26

String.replaceAll("[\n\r]", "");
Run Code Online (Sandbox Code Playgroud)

  • 兄弟@JohnB它将删除字符串之间的所有新行字符.ask是仅删除前导和尾随的新行字符. (2认同)

Ale*_*lov 10

此 Java 代码完全按照问题标题中的要求执行,即“从 string-java 的开头和结尾删除换行符”:

String.replaceAll("^[\n\r]", "").replaceAll("[\n\r]$", "")
Run Code Online (Sandbox Code Playgroud)

仅从行尾删除换行符:

String.replaceAll("[\n\r]$", "")
Run Code Online (Sandbox Code Playgroud)

仅从行首删除换行符:

String.replaceAll("^[\n\r]", "")
Run Code Online (Sandbox Code Playgroud)


Bas*_*que 9

tl;博士

String cleanString = dirtyString.strip() ; // Call new `String::string` method.
Run Code Online (Sandbox Code Playgroud)

String::strip…

String::trim方法对whitespace有一个奇怪的定义

正如此处所讨论的,Java 11strip…String该类添加了新方法。这些使用更 Unicode 精通的空格定义。请参阅 JavaDoc for 类中此定义的规则Character::isWhitespace

示例代码。

String input = " some Thing ";
System.out.println("before->>"+input+"<<-");
input = input.strip();
System.out.println("after->>"+input+"<<-");
Run Code Online (Sandbox Code Playgroud)

或者您可以去除前导尾随空格。

您没有准确提及构成换行符的代码点。我想您的换行符可能包含在以下目标代码点列表中strip

  • 它是一个 Unicode 空格字符(SPACE_SEPARATOR、LINE_SEPARATOR 或 PARAGRAPH_SEPARATOR),但也不是不间断空格('\u00A0'、'\u2007'、'\u202F')。
  • 它是 '\t', U+0009 水平制表。
  • 它是'\n',U+000A 换行符。
  • 它是 '\u000B',U+000B 垂直制表。
  • 它是 '\f', U+000C FORM FEED。
  • 它是 '\r', U+000D 回车。
  • 它是 '\u001C', U+001C 文件分隔符。
  • 它是 '\u001D', U+001D 组分隔符。
  • 它是 '\u001E', U+001E 记录分隔符。
  • 它是 '\u001F', U+0


ent*_*erd 6

如果您的字符串可能是null,请考虑使用StringUtils.trim()- 的空安全版本String.trim()