2011-06-05 22 views
12

basit olmalı, ancak ben onunla deliriyorum.Java regex: newline + white space

gibi bir metin Verilen: örnek metin üzerinde haline böylece hat sonlandıncılannı siler Java regex gerek

line number 1 
line number 2 
line number 2A 
line number 3 
line number 3A 
line number 3B 
line number 4 

ardından yeni çizgi, boşluk ile başlayan:

line number 1 
line number 2line number 2A 
line number 3line number 3Aline number 3B 
line number 4 
+1

deneyin': Belki –

+0

@Mike M: Apple'ın işletim sistemlerinde çalışmaz –

+0

OS-X üzerinde çalışmalı, değil mi? İnsanlar hala Apple'ın eski versiyonlarını kullanıyor mu? –

cevap

11

yourString.replaceAll("\n ", " "); Bu yardım etmeyecek?

+3

1) Soru diyor ki: ile başlayan çizgiyle karşılaşırsanız hem boş hem de yeni satırı kaldırın. 2) '\ n' taşınabilir –

+0

değil, şu anda yeterli. çok teşekkürler – MatteoSp

+3

@MatteoSp, Stings'in değişmez olduğunu hatırlatırız, bu yüzden aslında 'yourString = yourString.replaceAll ("\ n", ""); 'veya bunun gibi bir şey gerekir çünkü arama yöntemi String nesnesinin kendisini kalıcı olarak değiştirmez. Yardımcı olmaktan mutluluk duyuyorum :) – dantuch

2

"\n " Unix LF modundaysanız, bu hile yapmalıdır. DOS için CRLF "\r\n "'u eşleştirmeniz gerekiyor. RegexBuddy ile iyi baktığını kontrol ettik. ` "+ N \ W \ \ r?"

String pattern = System.getProperty("line.separator") + " "; 
string.replaceAll(pattern, ""); 
3

çapraz platformu yapmak. Denemedim, bu yüzden cevap olarak kaydetmek istemiyorum. Şimdiye kadar kontrol etmediyseniz, Java regex hakkında bazı detayları burada bulabilirsiniz: http://download.oracle.com/javase/6/docs/api/java/util/regex/Pattern.html .. Belirli bir satırdaki ilk satırın "satır" olduğunu garanti ederseniz, "\ r? \ N [^ l] +" `da deneyebilirsiniz.
+7

Sistem 'line.separator', gerçekten yardımcı olmuyor, çünkü dosyaların JVM'nin çalıştığı sistemde oluşturulup oluşturulmadığını bilmiyorsunuz. –

8
String res = orig.replaceAll("[\\r\\n]+\\s", "");