从Java字符串中删除行尾字符

时间:2009-02-27 06:05:58

标签: java string end-of-line

我有这样的字符串

"hello
java
book"

我想从字符串中删除\ r和\ n(hello \ r \ n \ n \ n \ n \ n \ n \ n \ n \ n \ n \ n \ n \ n \ n \ n \ n \ n \ n \ n \ n \ n \ n \ n \ n \ n我想要一个字符串作为“hellojavabook”。我怎么能这样做?

11 个答案:

答案 0 :(得分:121)

使用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", "");

答案 1 :(得分:14)

如果要避免使用正则表达式,或者必须以较早的JVM为目标,String.replace()将执行:

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

删除CRLF对:

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

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

答案 2 :(得分:11)

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);
}

在正则表达式中添加制表符也很有用。

答案 3 :(得分:4)

给出一个String str:

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

答案 4 :(得分:2)

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

答案 5 :(得分:2)

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

const newman = require('newman');

newman.run({
collection: require('PostmanCollection/MPDC.postman_collection.json'),
reporters: 'cli',
}, function (err){
if (err) {throw err;}
console.log('collection run complete');
});

答案 6 :(得分:1)

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项目中找到的代码。

答案 7 :(得分:1)

您可以使用unescapeJava中的org.apache.commons.text.StringEscapeUtils,如下所示

str = "hello\r\njava\r\nbook";
StringEscapeUtils.unescapeJava(str);

答案 8 :(得分:0)

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

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

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

String lineSeparator=System.lineSeparator();
String newString=yourString.replace(lineSeparator, "");

答案 9 :(得分:-1)

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

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

答案 10 :(得分:-6)

你试过吗

string.trim(); 

这意味着修剪字符串中所有前导和倾斜空格。希望这会有所帮助。

编辑:(我不够明确)

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

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

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