2013-01-12 110 views
1

我有一個像"100010"這樣的二進制字符串。我想分成幾個兩個字符,如 - >"10","00","10"將二進制字符串分成幾個兩個字符?

我該怎麼辦?不幸的是我不知道它。

String str = "100010"; 
int counter=0,end=1; 

for (int h = 0; h < str.length(); h++) { 
    String ss = str.substring(counter, end); 
    System.out.print(ss); 
    counter = counter + 2; 
    end = end + 2; 
} 

請幫我。

+0

的http://計算器.com/questions/3760152/java中的split-string-to-equal-length-substrings可能有所幫助 – Swapnil

+0

當你在調試器中完成程序時,你會看到什麼?你想在數字之間有空格嗎? –

回答

3

正如你想分裂每2個字符,你需要保持之間的差異counterend等於2。變量h是多餘的,實際上會造成StringIndexOutOfBoundsException

String str = "100010"; 
int counter = 0; 
int end = 2; 

while (end <= str.length()) { 

    String ss = str.substring(counter, end); 
    System.out.println(ss); 

    counter += 2; 
    end += 2; 
} 

或者,你可以每2個字符做一個正則表達式分裂。它使用正則表達式查找身後\G相結合,這在以前的比賽結束的位置相匹配的零寬度斷言:

for (String s: "100010".split("(?<=\\G..)")) { System.out.println(s); } 

兩個版本都產生:

10 
00 
10 
0
private String[] StringSpliter(String OriginalString) { 
    String newString = ""; 
    for (String s: OriginalString.split("(?<=\\G..)")) { 
     if(s.length()<3) 
      newString += s +"/"; 
     else 
      newString += StringSpliter(s) ; 
    } 
    return newString.split("/"); 
}