查找字符串变量中的位数

时间:2011-04-06 09:41:12

标签: java

我有一个字符串,有时会给出字符值,有时会给出整数值。我想获得该字符串中的位数计数。

例如,如果字符串包含“2485083572085748”,则总位数为16.

请帮助我。

9 个答案:

答案 0 :(得分:22)

使用正则表达式的清洁解决方案:

// matches all non-digits, replaces it with "" and returns the length.
s.replaceAll("\\D", "").length()

答案 1 :(得分:14)

String s = "2485083572085748";
int count = 0;
for (int i = 0, len = s.length(); i < len; i++) {
    if (Character.isDigit(s.charAt(i))) {
        count++;
    }
}

答案 2 :(得分:3)

只需使用流计数字符串中数字的流选项来刷新此线程:

"2485083572085748".chars()
                  .filter(Character::isDigit)
                  .count();

答案 3 :(得分:2)

循环每个字符并计算它。

    String s = "2485083572085748";
    int counter = 0;
    for(char c : s.toCharArray()) {
        if( c >= '0' && c<= '9') {
            ++counter;
        }
    }
    System.out.println(counter);

答案 4 :(得分:2)

如果你的字符串变得很大并且充满了除数字以外的其他东西,你应该尝试使用正则表达式。下面的代码会对您这样做:

String str = "asdasd 01829898 dasds ds8898";

Pattern p = Pattern.compile("\d"); // "\d" is for digits in regex
Matcher m = p.matcher(str);
int count = 0;
while(m.find()){
   count++;
}

查看java regex lessons了解更多信息。 干杯!

答案 5 :(得分:2)

public static int getCount(String number) {
    int flag = 0;
    for (int i = 0; i < number.length(); i++) {
        if (Character.isDigit(number.charAt(i))) {
            flag++;
        }
    }
    return flag;
}

答案 6 :(得分:1)

在JavaScript中:

str = "2485083572085748"; //using the string in the question
let nondigits = /\D/g;  //regex for all non-digits
let digitCount = str.replaceAll(nondigits, "").length;
//counts the digits after removing all non-digits
console.log(digitCount); //see in console

感谢-> https://stackoverflow.com/users/1396264/vedant对于上述Java版本。它也对我有帮助。

答案 7 :(得分:0)

int count = 0;
for(char c: str.toCharArray()) {
    if(Character.isDigit(c)) {
        count++;
    }
}

另见

答案 8 :(得分:-3)

类似的东西:

using System.Text.RegularExpressions;


            Regex r = new Regex( "[0-9]" );
            Console.WriteLine( "Matches " + r.Matches("if string contains 2485083572085748 then" ).Count );