2016-04-12 6 views
1

ここではすべての例を試しましたが、いずれも下のケースではうまくいきませんでした。 "\ n \ r"を置き換えて、以下のような配列を用意します。javaを\ r \ nに置き換えて配列に入れます

iは以下のように実行してみましたが、それは私に期待される結果

String m = "\\r\\nDate cf Mfg. \\r\\nMRP \\r\\n(Incl.of ali taxes) \\r\\nI I i I I I I I I I I I I I ! I I I Ill I I I I Ill \\r\\nS.No:602NRJT053740 \\r\\n61281660 \\r\\nModel .•GL-B171RDCM \\r\\n: ADGZEBNON) \\r\\nRefrigerator "; 
String ar[] = m.replaceAll("\\r\\n", "#").split("#"); 
System.out.println(ar.length); 

答えて

3

が表示されない問題は、あなたの文字列リテラルである:あなたダブルエスケープ\r\nので、彼らが実際に\r\nではありません、バックスラッシュとrのペアとバックスラッシュのペアに加えてnです。

正規表現では二重のエスケープが1回(Javaコンパイラで1回、regexエンジンで2回)エスケープされるため、バックスラッシュは2つ必要です。一方、文字列リテラルは、単一のエスケープを必要とします。

mを初期化し、文字列リテラルから二重のバックスラッシュを削除し、この問題を解決するには、次の

String m = "\r\nDate cf Mfg. \r\nMRP \r\n(Incl.of ali taxes) \r\nI I i I I I I I I I I I I I ! I I I Ill I I I I Ill \r\nS.No:602NRJT053740 \r\n61281660 \r\nModel .•GL-B171RDCM \r\n: ADGZEBNON) \r\nRefrigerator "; 

Demo(10を印刷します)。

+0

これは私が何を得ているか他の方法はありません –

+0

@HimanshuKhandelwal「これはあなたが得ていること」とはどういう意味ですか?あなたはファイルからそれを取得していますか?文字通り '\ r \ n' *テキスト*が入っていますか? – dasblinkenlight

+0

@HimanshuKhandelwalテキストを実際のバックスラッシュなどと一致させる必要がある場合は、スラッシュを4回エスケープする必要があります。つまり、 'm.replaceAll(" \\\\ r \\\\ n "、"# ")です。 ( "#"); '([デモ](http://ideone.com/5xKTn3)) – dasblinkenlight

関連する問題