1

のようなバイナリ文字列があり"100010"ます。"10"-> 、"00"、 のようにいくつかの 2 文字に分割したい"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;
}

助けてください。

4

2 に答える 2

3

2文字ごとに分割したいので、 と の差を に等しくする必要がcounterありendます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
于 2013-01-12T15:44:10.017 に答える
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("/");
}
于 2014-04-07T14:28:26.207 に答える