73

これはいくつかの言語で何度か尋ねられましたが、私はそれを機能させることができません。私はこのような文字列を持っています

String str = "This is a string.\nThis is a long string.";

そして、私は\n<br />使用して置き換えることを試みています

str = str.replaceAll("(\r\n|\n)", "<br />");

しかし、\nは置き換えられていません。この正規表現ツールを使用して検証しようとしましたが、同じ結果が表示されます。入力文字列に一致するものがありません"(\r\n|\n)"。私は何が間違っているのですか?

4

7 に答える 7

122

わたしにはできる。

public class Program
{
    public static void main(String[] args) {
        String str = "This is a string.\nThis is a long string.";
        str = str.replaceAll("(\r\n|\n)", "<br />");
        System.out.println(str);
    }
}

結果:

これは文字列です。<br/>これは長い文字列です。

あなたの問題はどこかにあります。

于 2010-06-16T20:17:51.880 に答える
19

私にとって、これはうまくいきました:

rawText.replaceAll("(\\\\r\\\\n|\\\\n)", "\\\n");

ヒント:ご使用の環境でコンパイルせずにすばやくテストするには、正規表現テスターを使用してください

于 2012-08-21T11:00:41.247 に答える
19

あなたが試みているもののもう少し堅牢なバージョン:

str = str.replaceAll("(\r\n|\n\r|\r|\n)", "<br />");
于 2010-06-16T20:18:07.647 に答える
10

私のアカウントは新しいので、NinovanHooffの答えに賛成票を投じることはできません。文字列がaspxベースのサーバーなどのWindowsベースのソースからのものである場合、このソリューションは機能します。

rawText.replaceAll("(\\\\r\\\\n|\\\\n)", "<br />");

ダブルバックスラッシュがシングルスラッシュエスケープ文字として解釈されているため、奇妙な文字セットの問題のようです。したがって、上記の4つのスラッシュが必要です。

繰り返しますが、ほとんどの状況"(\\r\\n|\\n)"で機能するはずですが、文字列がWindowsベースのソースからのものである場合は、上記を試してください。

参考までに、これらの行末を置き換える際に発生していた問題を修正するために、あらゆることを試みました。Windows-1252最初はからへの変換に失敗したと思いましたUTF-8。しかし、それもうまくいきませんでした。この解決策は、最終的にトリックを行ったものです。:)

于 2014-07-02T17:29:55.803 に答える
2

わたしにはできる。Javaコードは、作成したとおりに機能します。テスターでは、入力文字列は次のようになります。

This is a string.
This is a long string.

...実際のラインフィードを使用します。使用できません:

This is a string.\nThis is a long string.

\n...リテラルシーケンスのバックスラッシュ'n'として扱われるため。

于 2010-06-16T20:40:59.360 に答える
0

それはうまくいくはずですが、それを理解しようとして自殺しないでください。2パスを使用するだけです。

str  = str.replaceAll("(\r\n)", "<br />");
str  = str.replaceAll("(\n)", "<br />");

免責事項:これはあまり効率的ではありません。

于 2010-06-16T20:14:35.117 に答える
-2

これは機能するはずです。あなたは2つのスラッシュを入れる必要があります

str = str.replaceAll("(\\r\\n|\\n)", "<br />");

このリファレンスには、次のような例があります。

private final String REGEX = "\\d"; // a single digit

私は多くのプロジェクトで2つのスラッシュを使用しましたが、うまく機能しているようです。

于 2010-06-16T20:15:45.550 に答える