65

我有这样的字符串

"hello
java
book"

我想\r\n. String(hello\r\njava\r\nbook)我希望结果是"hellojavabook". 我怎样才能做到这一点?

4

11 回答 11

137

带有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", "");
于 2009-02-27T06:13:06.607 回答
18

如果您想避免使用正则表达式,或者必须针对较早的 JVM,String.replace() 将执行以下操作:

str=str.replace("\r","").replace("\n","");

并删除一个 CRLF 对:

str=str.replace("\r\n","");

后者比构建一个正则表达式来做同样的事情更有效。但我认为前者作为正则表达式会更快,因为字符串只解析一次。

于 2009-02-27T06:23:48.423 回答
18
public 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);
}

在正则表达式中添加表格也会很有用。

于 2013-11-12T14:11:38.933 回答
5

给定一个字符串 str:

str = str.replaceAll("\\\\r","")
str = str.replaceAll("\\\\n","")
于 2009-02-27T06:09:50.500 回答
3

如果您知道 Windows、Mac 或 UNIX 中的行终止符,则可以直接传递行终止符,例如 \n。或者,您可以使用以下代码替换三个主要操作系统中的任何一个中的换行符。

str = str.replaceAll("\\r\\n|\\r|\\n", " ");

上面的代码行将在 Mac、Windows 和 Linux 中用空格替换换行符。您也可以使用行分隔符。它适用于所有操作系统。下面是行分隔符的代码片段。

String lineSeparator=System.lineSeparator();
String newString=yourString.replace(lineSeparator, "");
于 2018-10-25T07:59:49.977 回答
2

您是否尝试过使用replaceAll方法将任何出现的 \n 或 \r 替换为空字符串?

于 2009-02-27T06:10:21.077 回答
2
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 项目中找到的代码。

于 2010-09-20T09:28:15.107 回答
2

你可以像下面这样unescapeJava使用org.apache.commons.text.StringEscapeUtils

str = "hello\r\njava\r\nbook";
StringEscapeUtils.unescapeJava(str);
于 2019-01-04T07:22:07.780 回答
0

嘿,我们也可以使用这个正则表达式解决方案。

String chomp = StringUtils.normalizeSpace(sentence.replaceAll("[\\r\\n]"," "));
于 2020-03-09T19:23:45.060 回答
-1

试试下面的代码。它对我有用。

str = str.replaceAll("\\r", "");
str = str.replaceAll("\\n", "");
于 2021-07-01T11:05:32.993 回答
-7

你试过了吗

string.trim(); 

这是为了修剪字符串中所有前导和倾斜的空格。希望这可以帮助。

编辑:(我不够明确)

因此,当您使用 string.split() 时,您将有一个 string[] - 对于数组中的每个字符串,执行 string.trim() 然后附加它。

String[] tokens = yourString.split(" ");
StringBuffer buff = new StringBuffer();
for (String token : tokens)
{
  buff.append(token.trim());
}

使用 stringBuffer/Builder 而不是追加到同一个字符串中。

于 2012-08-23T05:39:17.670 回答