我有一个字符串,有时会给出字符值,有时会给出整数值。我想获得该字符串中的位数计数。
例如,如果字符串包含“2485083572085748”,则总位数为16.
请帮助我。
答案 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)
答案 8 :(得分:-3)
类似的东西:
using System.Text.RegularExpressions;
Regex r = new Regex( "[0-9]" );
Console.WriteLine( "Matches " + r.Matches("if string contains 2485083572085748 then" ).Count );