2013-01-12 111 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("/"); 
}