2016-04-12 11 views
1

ich versuchte alle Beispiel hier, aber keiner von ihnen arbeitete in der unten genannten Fall, ich möchte "\ n \ r" ersetzen und ein Array wie unten vorbereiten.Java ersetzt \ r \ n und setzen sie in Array

Ich habe versucht, wie weiter unten ausgeführt wird, aber es ist mir nicht das erwartete Ergebnis

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

Antwort

3

Das Problem ist in Ihrem Stringliteral zeigt: Sie doppelt entkam \r und \n, so dass sie nicht wirklich \r und \n, sie sind Backslash-Paare plus r und Backslash plus n.

In der Regex werden doppelte Backslashes benötigt, da ihr Inhalt zweimal entschlüsselt wird - einmal vom Java-Compiler und einmal von der Regex-Engine. Stringliterale hingegen benötigen ein einzelnes Escaping.

um dieses Problem zu beheben, entfernen Sie doppelte Schrägstriche aus dem String m wörtlichen Initialisierung:

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 (druckt 10).

+0

aber das ist, was ich bekomme .. ist es andersrum –

+0

@HimanshuKhandelwal Was meinst du mit "das ist, was du bekommst"? Erhalten Sie es aus einer Datei, und es hat buchstäblich '\ r \ n '* Text * drin? – dasblinkenlight

+0

@HimanshuKhandelwal Wenn Sie Text mit tatsächlichen Backslashes und so weiter übereinstimmen müssen, müssen Sie Ihre Schrägstriche vervierfachen - dh 'm.replaceAll (" \\\\ r \\\\ n "," # ") ("#"); '([demo] (http://ideone.com/5xKTn3)) – dasblinkenlight