2012-10-04 39 views
0

每次出現一個字母時,我已經將一個字符串拆分成一個數組,但是現在我想要將數組中的每個字符串拆分成更多數組,然後出現另一個字母,在每個拆分下面添加一個數組,並刪除該字母。每當一個字母看起來形成一個數組在Java中形成一個更長的數組

這裏是我的代碼:

private String input = "118u121u23n24" 
private int y = 0; 
private String[] split_main = new String[100]; 
private void split_u(){ 
     String[] split = input.split("u"); 
     for(int x=0; split.length>x; x++){ 
      split_main[y] = split[x]; 
      if(split.length>x+1) 
       split_main[y+1] = "+"; 
      y +=2; 
     } 

這種分裂我的串入一個這樣的數組 - 創建一個新的數組,每次出現「U」,並增加了一個加

118 
+ 
121 
+ 
23n24 

我現在想通過這些數組中的每一個,查找字母n並將其放在單獨的行中,以便將它作爲新數組。然而,每次我嘗試這個時,我都有錯誤,因爲我似乎無法再對陣列使用Split方法。如果使用分裂是不可能的,那麼是否有另一種方式來做到這一點?

118 
+ 
121 
+ 
23 
n 
24 

在此先感謝您的幫助。

回答

2

試試這個

String[] split = input.split("u|n"); 

u|n意味着分割字符串與un,簡單地將字符串拆分爲兩個分隔符

雖然你想在兩個層次上添加不同的分隔符,你應該這樣寫代碼。

String input = "118u121u23n24"; 
    String[] s2; 
    ArrayList<String> main = new ArrayList<String>(); 

    String[] split = input.split("u"); 
    for(int x=0; split.length>x; x++){ 
     s2 = split[x].split("n"); 

     for(int k=0; k<s2.length; k++){ 
      main.add(s2[k]); 
      if(s2.length>k+1) 
       main.add("n"); 
     } 

     if(split.length>x+1) 
      main.add("+"); 
    } 
    // print main array to test 
    for(int i=0;i<main.size();i++) 
     System.out.println(main.get(i)); 
+0

但是如何在它們之間插入「+」或「n」,具體取決於我刪除哪個字母,就像它在示例輸出中那樣? – braza

+0

在這種情況下,你必須迭代'分裂'陣列和拆分字符串上的第二個 – Farnabaz

+0

上面的代碼應該是工作 – Farnabaz

1

我建議你只需各執一次所有的信件,使用正則表達式:

String[] split = input.split("(+|n)"); 

如果需要的中間步驟,然後做到這一點是通過第一迭代的唯一途徑拆分,在第二個字母上創建一個拆分結果數組。如果你想對多個拆分模式(不僅僅是「+」和「n」)做這個,你需要一個通用程序。下面是示例代碼:

然後,你將與每個字符與要分割稱之爲:

private String input = "118u121u23n24"; 
private ArrayList<String> split_main = new ArrayList<String>(); 
split_main.add(input); 
splitElements(split_main, "+", 0); 
for (int i = 0; i < len; ++i) { 
    i += splitElements(split_main, "n", i); 
} 
0

這是可能的。使用List而不是數組來簡化插入新項目。

如果只想陣列,這樣做兩遍:首先,遍歷input和算你多少電池需要因爲n,然後創建適當大小的新數組和input內容複製到它,分裂沿辦法。

相關問題