例如,如果二进制字符串是10100010,则程序必须返回第1,第3和第7,即1的位置。
答案 0 :(得分:2)
以下是您要查找的代码,请注意正则表达式从第零位开始。
String regex = "[1]";
String data = "10100010";
Matcher m = Pattern.compile(regex).matcher(data);
while(m.find())
{
System.out.println(m.group() + " => " + (m.start()+1) );
}
答案 1 :(得分:0)
两个选项:
将其转换为整数/长(如果可能),然后每次移位一位并检查它是否为1.例如:
String str = "10100010";
Integer x = Integer.valueOf(str);
int len = str.length();
while (x != 0) {
if (x & 0x1 == 1) {
System.out.println(len);
}
len--;
x >>= 1;
}
扫描字符串by-index并检查其是否为'值是1:
for (int i = 0; i < str.length(); i++) {
if (str.chatAt(i) == '1') {
//print
}
}
答案 2 :(得分:0)
char[] str="10100010".toCharArray();
for(int i=0;i<str.length;i++){
if(str[i]=='1'){
int setBit=1;
setBit+=i;
System.out.println(setBit+"th");
}
}