2016-04-12 18 views
1

Burada tüm örneği denedim ancak hiçbiri aşağıdaki durumda çalışmadı, "\ n \ r" yerine aşağıdaki gibi bir dizi hazırlamak istiyorum.java \ r \ n değiştirerek ve bunları diziye koyma

i aşağıdaki gibi çalışan çalıştı ama bana beklenen sonucu

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

cevap

3

gösterilmiyor Sorun dizede literal şudur: çift çıkış \r ve \n, bu yüzden aslında \r ve \n değildir, bunlar ters eğik çizgi artı r ve ters eğik çizgi artı n çiftleridir.

Çift ters eğik çizgi regex'de gereklidir, çünkü içeriği iki kez - Java derleyicisi tarafından bir kez, regex motoru tarafından bir kez daha çıkarılmamaktadır. Öte yandan dize değişmezleri, tek kaçışa ihtiyaç duyar.

Bu sorunu gidermek m başlatılıyor literal dizesinden çift ters eğik kaldırmak için:

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 yazdırır).

+0

ama şu an alıyorum .. –

+0

@HimanshuKhandelwal Başka bir yol var mı? Ne demek istiyorsun? Bir dosyadan alıyor musunuz ve kelimenin tam anlamıyla '\ r \ n' * text * var mı? – dasblinkenlight

+0

@HimanshuKhandelwal Metinleri gerçek ters eğik çizgi ile eşleştirmeniz gerekiyorsa, bölü çizginize dört kez kaçmanız gerekir - yani “m.replaceAll (" \\\\ r \\\\ n "," # "). ("#"); '([demo] (http://ideone.com/5xKTn3)) – dasblinkenlight

İlgili konular