2016-04-18 6 views
-1

私は少しのプログラムatmを作成しています。すべての改行をシンボル、f.e.で置き換える必要があります。 "#" 私はこのテキストを入力するのであれば:私もすべてのライン改行を別のシンボルに置き換えてください

String text2 = text.replaceAll("\\\\n", "#"); 

をしようとしたいくつかの研究の後

String text2 = text.replaceAll("\n", "#"); //text is the inputed text 

test1 
test2 
test3 

が、それは私がこれをやってみました

test1#test2#test3 

になる必要がありますなぜなら誰かがこれはコンパイラやidkと関係があると言います。どんな助けもありがとう!

+1

そして、どのようにあなたが取得している 'text' ?それは実際に改行を含んでいますか?また、 'replace'はあなたが望むものです。 'replaceAll'は*正規表現*をとります。 –

+0

テキストは文字列変数で、次のようにjTextPaneからテキストを取得します:textPane.getText()@CubeJockey – SyxDuLappen

答えて

3

改行はシステムによって異なります。 UNIXシステムでは、これは "\ n"です。 Microsoft Windowsシステムでは、これは "\ r \ n"です。したがって、コード・プラットフォームを独立させる方が良いです。

使用何かのように:

String text = rawText.replaceAll(System.lineSeparator(), "#"); 

嘆願はSystem.lineSeparatorは、()は、Java 1.7から利用可能であることに注意してください。

+1

さらに、regex構文を使用しない場合は、 'replaceAll'の代わりに' replace'を使用できます。両方の方法は、検索されたテキストのすべての*出現を置き換えます(主な違いは、正規表現の構文サポートのみです)。 – Pshemo

0

\\と入力してエスケープされた円記号を使用します。キャリッジリターン\r\nもご確認ください。あなたのラインのみ\nで区切らウェア場合

String test = "test1\ntest2\r\ntest3"; 
System.out.println(test.replaceAll("(\\n|\\r\\n)", "#")); 
0

replaceAll("\n", "#")は正常に動作する必要があります。それがうまくいかなかった場合は、\r\u0085(次の行 - NEL)、またはおそらくは\r\nのような他の行区切り文字をテキストが使用していることを意味します。

replaceAllは正規表現構文を使用しているので、すべての行区切り文字に一致させるために\R(Java 8の正規表現エンジンに追加)を使用できます。だからあなたは試してみることができます。あなたは\r\nまたは\nまたは\r代表する正規表現を使用でき(Androidアプリケーションの場合のように)は、Java 8を使用できない場合

String text2 = text.replaceAll("\\R", "#"); 

String text2 = text.replaceAll("\r\n|\n|\r", "#"); 
//can be reduced to .replaceAll("\r?\n|\r", "#"); 
関連する問題