我有一个字符串,其中包含一些文本,后面跟着一个空行。如何最好地保留文本部分,但删除末尾的换行符空格?
我有一个字符串,其中包含一些文本,后面跟着一个空行。如何最好地保留文本部分,但删除末尾的换行符空格?
使用String.trim()
方法来去除字符串开头和结尾的空格(空格、换行等)。
String trimmedString = myString.trim();
String.replaceAll("[\n\r]", "");
这段Java代码完全符合问题标题中所要求的内容:"从Java字符串的开头和结尾删除换行符":
String.replaceAll("^[\n\r]", "").replaceAll("[\n\r]$", "")
仅从行末删除换行符:
String.replaceAll("[\n\r]$", "")
仅从行开头删除换行符:
String.replaceAll("^[\n\r]", "")
String cleanString = dirtyString.strip() ; // Call new `String::string` method.
String::strip…
旧的String::trim
方法对于空白字符有一个奇怪的定义。
如这里所述,Java 11在String
类中添加了新的strip…
方法。这些方法使用更加Unicode智能的空白字符定义。请查看Character::isWhitespace
的类JavaDoc中的规则。
示例代码。
String input = " some Thing ";
System.out.println("before->>"+input+"<<-");
input = input.strip();
System.out.println("after->>"+input+"<<-");
您没有明确提到哪些代码点构成您的换行符。我想您的换行符可能包含在strip
所针对的代码点列表中:
如果您只想删除String的开头和结尾(不是中间)的换行符(而不是空格、制表符),则可以使用以下方法:
使用正则表达式从字符串开头(^
)和结尾($
)删除回车符(\\r
)和换行符(\\n
):
s = s.replaceAll("(^[\\r\\n]+|[\\r\\n]+$)", "")
完整示例:
public class RemoveLineBreaks {
public static void main(String[] args) {
var s = "\nHello world\nHello everyone\n";
System.out.println("before: >"+s+"<");
s = s.replaceAll("(^[\\r\\n]+|[\\r\\n]+$)", "");
System.out.println("after: >"+s+"<");
}
}
它的输出结果为:
before: >
Hello world
Hello everyone
<
after: >Hello world
Hello everyone<
试试这个
function replaceNewLine(str) {
return str.replace(/[\n\r]/g, "");
}
我也想补充一个答案,因为虽然我有同样的问题,但是提供的答案并不足够。经过一番思考,我意识到可以使用正则表达式非常容易地完成此操作。
要从开头移除换行符:
// 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()
的第二个参数只是限制次数。如果您想匹配无限次,请省略它。 - ZhroString 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])$", "") + "]");
另一种优雅的解决方案。
String myString = "\nLogbasex\n";
myString = org.apache.commons.lang3.StringUtils.strip(myString, "\n");