2012-01-12 19 views
5

Böyle bir Dize var: "LODIXAL COMP 15"Dize bölme nasıl java sayıları içerir?

"LODIXAL COMP" ve "15" için nasıl bölüştürebilirim?

String a = "LODIXAL COMP 15"; 

String[] result = {"LODIXAL COMP" , "15"} 
+0

Lütfen okuyunuz (http://docs.oracle.com/javase/tutorial/essential/regex/) – mre

+3

Bölünme yeri için kesin ölçüt nedir? İlk döndürülen dize hiç basamak içerebilir mi? @ Aix'in sorusuna yanıt veren – NPE

+0

, size iyi bir yanıt oluşturmanıza yardımcı olacaktır. Ne almak istiyorsun: AAA BBB 2 3 CCC 4? [AAA BBB, 2, 3, CCC, 4]? – smas

cevap

14

bunu kullanın positive lookahead tabanlı regex:

a.split(" (?=\\d+)"); 

TEST:

System.out.println(Arrays.toString(a.split(" (?=\\d+)"))); 

ÇIKIŞ:

[LODIXAL COMP, 15] 
+0

String a = "LODIXAL 12 3 COMP 15" ile ne var; Çıktı: [LODIXAL, 12, 3 COMP, 15] – smas

+0

@smas Evet, bu regex dizginizle çalışmaz, bunun için a.split ("(? = \\ d + $)") 'a ihtiyacınız olacaktır. Cevabı düzenleyebilirim ancak OP'nin kodunda böyle bir dize olup olmadığını bilmiyoruz. – anubhava

+0

gibi başka bir durum vardır: String a = "ACEDICON COMP 1 X 5 MG" ve "ACEDICON COMP 1" ve "X 5 MG" ye bölünmelidir. Nasıl yapabilirim? – michdraft