2013-09-07 13 views
14

Sorgum için web'de arama yaptım, ancak gereksinimime tam olarak uyan yanıtı almadım. Benim dize aşağıda gibi olması:Java String.split() yöntemindeki çıkış karakterleriyle ayırıcıyı işleme

A|B|C|The Steading\|Keir Allan\|Braco|E 

My Çıktı aşağıda gibi görünmelidir:

A 
B 
C 
The Steading|Keir Allan|Braco 
E 

Benim şartı çıkış sırası öncesinde ise sınırlayıcı atlamak etmektir. benim sorunum sınırlayıcı dinamik, son kullanıcı tarafından tanımlanacak ve her zaman | olması gerekmez olduğunu

(?<!\\)\| 

Ama: Ben String.split() aşağıdaki kullanarak Negatif geriye çalıştılar. Klavyede herhangi bir karakter olabilir (kısıtlama yoktur). Dolayısıyla, şüphem şu ki, normal ifade, normal ifadede izin verilmeyen bazı özel karakterler için başarısız olabilir.

Sadece bunun için mükemmel bir yol olup olmadığını bilmek istedim.

cevap

24

Sen Pattern.quote() kullanabilirsiniz: Siz de özel bir kaçış dizisi kullanmak için bu uzatabilirsiniz

String delim = "|"; 
String regex = "(?<!\\\\)" + Pattern.quote(delim); 

for (String s : "A|B|C|The Steading\\|Keir Allan\\|Braco|E".split(regex)) 
    System.out.println(s); 
 
A 
B 
C 
The Steading\|Keir Allan\|Braco 
E 

:

String regex = "(?<!\\\\)" + Pattern.quote(delim); 

sizin örneği kullanarak

String delim = "|"; 
String esc = "+"; 
String regex = "(?<!" + Pattern.quote(esc) + ")" + Pattern.quote(delim); 

for (String s : "A|B|C|The Steading+|Keir Allan+|Braco|E".split(regex)) 
    System.out.println(s); 
 
A 
B 
C 
The Steading+|Keir Allan+|Braco 
E 
+0

Bilgi istemi yanıtı için teşekkürler. Ancak, tüm özel karakterlerin normal ifadelere izin verilip verilmediğini bilmek istiyorum. Bunun istisnaları var mı? – user2757740

+0

@ user2757740 Pattern Pattern.quote() 'ın bağlantılı belgelerini okuyun; bir dize alır ve tüm özel karakterlerden kaçar. İstisnalar yoktur. – arshajii

+0

Sorunun çoğunu çözdü. Çok teşekkür ederim .. Ama kaçış sıralarım için de aynı pattern.quote() öğesini uygulamak istedim. Ama, korkarım ki çalışmıyor :((? user2757740

İlgili konular