2013-03-17 61 views
2

假設我有一個字符串數組如何分割字符串數組的每個元素並形成一個新的數組?

NumText[]={「00111」, 「01110」, 「10110」}, 

現在我想要一個新的數組

BinaryText[]={"0","0","1","1","1"......"1","1","0"}, 

這意味着我必須分裂陣列NumText []的每個元素,並結合所有的位,我得到進入一個新的陣列。我可以找出是我定義了一個字符串數組的每個元素,像

Binary0=NumText[0].split(""); 
Binary1=NumText[1].split(""); 
Binary2=NumText[2].split(""); 

之後,我不得不刪除每個BinaryX的前導零,並串連在一起,這實在是一個糟糕的主意。有更好的方法嗎?我感謝您的幫助。

+0

您CA ñ嘗試使用Arrays.copyOfRange() – 2013-03-17 08:06:24

+0

使用嵌套循環。外層應該在NumText上循環,內層應循環每個字符串的字符。 – 2013-03-17 08:08:05

+0

@Eyal Schneider尼斯解決方案,我試過了。 – phil 2013-03-17 08:28:28

回答

1

使用兩個環路外爲全陣列內每個索引的字符串:

StringBuilder temp = new StringBuilder(); 
for(int i=0; i < numText.length; i++){ 
    for(int j = 0; j < numText[i].length(); j++){ 
     temp.append(numText[i].charAt(j)); 
    } 

} 

char[] newArray = temp.toCharArray(); 
+0

看來請求的輸出是一個字符串數組,而不是一個char數組。 – 2013-03-17 08:27:39

0

我不知道爲什麼你去除零,但這裏是我的回答

String [] s = {"01 110"," 10010","01010"}; 
     ArrayList<String> list= new ArrayList<String>(); 
     for(int i =0 ; i<s.length;i++){ 
      s[i]=s[i].replaceAll("[0\\s]", ""); 
       for(int j = 0 ; j<s[i].length();j++){ 
        list.add(Character.toString(s[i].charAt(j))); 
       } 
     } 
     System.out.println(list.toString()); 
+0

使用ArrayList,這很酷。而我想移動的不是那些0,而是'分裂'產生的0。由於我分割了一個空字符串,我猜結果數組會有一個前導0.這就是我最後一次努力將一個用戶輸入字符串按字母分開並將它們存儲在一個數組中的情況。無論如何,我的解決方案不會有這樣的問題。 – phil 2013-03-17 08:33:02

0
String numText[] = { "00111", "01110", "10110" }; 
StringBuilder sb = new StringBuilder(); 

for (int i = 0; i < numText.length; i++) { 
    numText[i] = numText[i].replaceAll("^[0]*", ""); //Remove leading zeros 
    for (int j = 0; j < numText[i].length(); j++) { 
     sb.append(numText[i].charAt(j)); 
    } 
} 
String[] output = sb.toString().split(""); 
1

你可以試試這個太...

String[] numText = { "00111", "01110", "10110" }; 
char[] binaryText = (Arrays.toString(numText).replace("[", "").replace("]", "").replaceAll("[, ]", "")).toCharArray(); 
相關問題