web-dev-qa-db-ja.com

Java stringから行末文字を削除します

私はこのような文字列を持っています

"hello
Java
book"

String(hello\r\njava\r\nbook)から\ rおよび\ nを削除します。 「hellojavabook」という文字列が必要です。これどうやってするの?

59
sahil

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", "");
122
TofuBeer

正規表現を避けたい場合、または以前のJVMをターゲットにする必要がある場合、String.replace()は以下を行います。

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

また、CRLFペアを削除するには:

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

後者は、同じことを行うために正規表現を構築するよりも効率的です。しかし、文字列は一度しか解析されないため、前者は正規表現としてより高速になると思います。

15
Lawrence Dol
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);
}

正規表現にも表を追加すると便利です。

12
ronicst

文字列strが与えられた場合:

str = str.replaceAll("\\\\r","")
str = str.replaceAll("\\\\n","")
4
Beep beep

replaceAll メソッドを使用して、発生した\ nまたは\ rを空の文字列に置き換えましたか?

2
Rob Lachlan

以下のようにorg.Apache.commons.text.StringEscapeUtilsからunescapeJavaを使用できます

str = "hello\r\njava\r\nbook";
StringEscapeUtils.unescapeJava(str);
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プロジェクトで見つかったコード。

1
RazvanM

行ターミネータを直接渡すことができます。\n、Windows、Mac、またはUNIXで行末記号がわかっている場合。または、次のコードを使用して、3つの主要なオペレーティングシステムのいずれかの改行を置き換えることができます。

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

上記のコード行は、Mac、Windows、およびLinuxで改行をスペースに置き換えます。また、行区切り文字を使用できます。すべてのOSで機能します。以下は、行区切りのコードスニペットです。

String lineSeparator=System.lineSeparator();
String newString=yourString.replace(lineSeparator, "");
0
Er.Naved Ali