我有这样的字符串
"hello
java
book"
我想从字符串String(hello\r\njava\r\nbook)
中删除\r
和\n
,并希望结果为"hellojavabook"
。我该怎么做?
我有这样的字符串
"hello
java
book"
我想从字符串String(hello\r\njava\r\nbook)
中删除\r
和\n
,并希望结果为"hellojavabook"
。我该怎么做?
使用replaceAll的正则表达式。
public class Main
{
public static void main(final String[] argv)
{
String str;
str = "hello\r\njava\r\nbook";
str = str.replaceAll("(\\r|\\n)", "");
System.out.println(str);
}
}
如果您只想在\r和\n成对出现时删除它们(上面的代码会删除\r或\n),请改用以下代码:str = str.replaceAll("\\r\\n", "");
System.getProperty("line.separator");
代替硬编码的换行符。每个操作系统都有自己的换行符。 - GeorgianSystem.getProperty("line.separator");
将无法工作。但是,如果您可以信任来自相同操作系统的文本,则最好使用系统属性。 - Mindwin Remember Monicaline.separator
的值?我尝试在正则表达式中传递"\\" + lineSeparator
,但它没有起作用。 - Don Cheadlepublic static void main(final String[] argv)
{
String str;
str = "hello\r\n\tjava\r\nbook";
str = str.replaceAll("(\\r|\\n|\\t)", "");
System.out.println(str);
}
在正则表达式中添加制表符会很有用
如果你想避免正则表达式,或者必须针对早期的JVM版本,可以使用String.replace()方法:
str=str.replace("\r","").replace("\n","");
而要删除一个CRLF对:
str=str.replace("\r\n","");
相比使用正则表达式来完成同样的任务,前者更有效率。但我认为由于字符串只被解析一次,所以后者作为正则表达式会更快。
给定一个字符串 str:
str = str.replaceAll("\\\\r","")
str = str.replaceAll("\\\\n","")
如果您知道 Windows、Mac 或 UNIX 中的行终止符,可以直接传递换行符(如 \n)。或者,您可以使用以下代码替换三个主要操作系统中的换行符。
str = str.replaceAll("\\r\\n|\\r|\\n", " ");
以上代码行将在Mac、Windows和Linux中使用空格替换换行符。 您还可以使用line-separator。它适用于所有操作系统。以下是line-separator的代码片段。
String lineSeparator=System.lineSeparator();
String newString=yourString.replace(lineSeparator, "");
static byte[] discardWhitespace(byte[] data) {
byte groomedData[] = new byte[data.length];
int bytesCopied = 0;
for (int i = 0; i < data.length; i++) {
switch (data[i]) {
case (byte) '\n' :
case (byte) '\r' :
break;
default:
groomedData[bytesCopied++] = data[i];
}
}
byte packedData[] = new byte[bytesCopied];
System.arraycopy(groomedData, 0, packedData, 0, bytesCopied);
return packedData;
}
这段代码来自commons-codec项目。
org.apache.commons.text.StringEscapeUtils
的unescapeJava
:str = "hello\r\njava\r\nbook";
StringEscapeUtils.unescapeJava(str);
我使用了 \s+
,它帮我删除了 \r
和 \n
字符。
\s+
可以匹配一个或多个空白字符。
final String stringWithWhitespaceChars = "Bart\n\r";
final String stringWithoutEscapeChars = stringWithEscapeChars.replaceAll("\\s+","");
嘿,我们也可以使用这个正则表达式解决方案。
String chomp = StringUtils.normalizeSpace(sentence.replaceAll("[\\r\\n]"," "));