2013-03-14 20 views

回答

3

您可以使用此表達式:

String arr[] = s.split(",0?\\s*"); 

或甚至是:你要哪一個

String arr[] = s.split("[,0\\s]+"); 

是這個例子不清楚。

+0

第二個選項不能用s =「da0vid,marko,rita,0 megan,0 vivian,law」;當我需要 da0vid 馬爾科 麗塔 梅根 – David 2013-03-15 15:34:27

+0

的firts工作正常 – David 2013-03-15 16:11:28

0

你的正則表達式是: 「(,0 |)」

那麼試試這個代碼:

public static void main(String[] args){ 
     String s = "david,marko,rita,0 megan,0 vivian,law"; 
     String[] ss = s.split("(,0 |,)"); 
     for (int i = 0; i < ss.length; i++) { 
      String string = ss[i]; 
      System.out.println(string); 
     } 
    } 
+0

很好的替代 – David 2013-03-15 15:46:13

+0

我understan它清楚地 – David 2013-03-15 16:08:56

0

只是一個建議 而是然後用多個值分裂試試這個

import java.util.*; 
class test { 
    public static void main(String[] args) { 
    String s = "david,marko,rita,0 megan,0 vivian,law"; 
    System.out.println(Arrays.toString(s.replace("0","").replace(" ","").split(","))); 
    } 
} 
+0

你可以申請.replace只有一次的字符「0」 – 2013-03-14 08:16:49

+0

它的工作原理:http://ideone.com/QQ02Oa – 2013-03-14 08:22:51

+0

是的,它會工作,但這些是一些額外的代碼,沒有優化 – 2013-03-14 08:32:35

0

您可以試試這個:

public class SplitTest { 

    public static void main(String[] args) { 
     String inputString = "david,marko,rita,0 megan,0 vivian,law"; 
     String splits[] = inputString.split(",0?\\s*"); 
     for (String split : splits) { 
      System.out.println(split); 
     } 
    } 
} 
0
String[] arr = s.split(",(0\\s+)*"); 

正則表達式用逗號分割,後跟可選的0和一個或多個空格。

 public static void main(String[] args) { 
     String s = "da0vid,marko,rita,0 megan,0 vivian,law"; 
     String[] arr = s.split(",(0\\s+)*"); 
     for (int i = 0; i < arr.length; i++) 
      System.out.println("'"+arr[i]+"'"); 
     } 

=> 
'da0vid' 
'marko' 
'rita' 
'megan' 
'vivian' 
'law' 
+0

你能擴展你的答案來解釋如何達到預期的結果嗎? – 2013-09-06 11:52:18

相關問題