Answers:
使用String.trim()
方法从字符串的开头和结尾去除空格(空格,换行等)。
String trimmedString = myString.trim();
String cleanString = dirtyString.strip() ; // Call new `String::string` method.
String::strip…
旧String::trim
方法对空格的定义很奇怪。
随着讨论这里,Java的11增加了新的strip…
方法到String
类。这些使用更精通Unicode的空白定义。请参阅JavaDoc类中有关此定义的规则Character::isWhitespace
。
示例代码。
String input = " some Thing ";
System.out.println("before->>"+input+"<<-");
input = input.strip();
System.out.println("after->>"+input+"<<-");
您没有确切提及组成换行符的代码点。我想您的换行符可能包含在以下针对的代码点列表中strip
:
此Java代码完全符合问题标题中的要求,即“从字符串java的开头和结尾删除换行符”:
String.replaceAll("^[\n\r]", "").replaceAll("[\n\r]$", "")
仅从行尾删除换行符:
String.replaceAll("[\n\r]$", "")
仅从行首删除换行符:
String.replaceAll("^[\n\r]", "")
如果您的字符串可能存在null
,请考虑使用StringUtils.trim()
-的null安全版本String.trim()
。
String trimStartEnd = "\n TestString1 linebreak1\nlinebreak2\nlinebreak3\n TestString2 \n";
System.out.println("Original String : [" + trimStartEnd + "]");
System.out.println("-----------------------------");
System.out.println("Result String : [" + trimStartEnd.replaceAll("^(\\r\\n|[\\n\\x0B\\x0C\\r\\u0085\\u2028\\u2029])|(\\r\\n|[\\n\\x0B\\x0C\\r\\u0085\\u2028\\u2029])$", "") + "]");
我还要为此添加一个答案,因为尽管我有相同的问题,但提供的答案仍然不够。经过深思熟虑,我意识到使用正则表达式可以非常轻松地完成此操作。
要从一开始就删除换行符:
// Trim left
String[] a = "\n\nfrom the beginning\n\n".split("^\\n+", 2);
System.out.println("-" + (a.length > 1 ? a[1] : a[0]) + "-");
和一个字符串的结尾:
// Trim right
String z = "\n\nfrom the end\n\n";
System.out.println("-" + z.split("\\n+$", 2)[0] + "-");
我敢肯定,这不是修剪字符串最有效的方式。但这确实是内联此类操作的最干净,最简单的方法。
请注意,由于它是一个简单的正则表达式,因此可以用相同的方法修剪两端的任何字符变体和组合。
split()
就是极限。如果您想无限次匹配,则将其关闭。
String text = readFileAsString("textfile.txt");
text = text.replace("\n", "").replace("\r", "");