繁体   English   中英

如何计算电话号码的位数?

[英]how count the number of digits of telephone numbers?

对于普通号码来说很容易,但电话号码可以以 01-.... 开头,例如,对于 java,01234 基本上是 1234,对吧?

所以我不能递归地除以 10 来找出有多少位数。 有什么不同的方法可以找出有多少位数?

提前致谢。 ps.:如果可能,不要使用正则表达式

假设电话号码是一个字符串,

String pn = "049-4912394129" // that's a random value

然后你可以迭代那个字符串并检查一个字符是否确实是一个数字

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

由于您的电话号码是一个整数,因此您无需为正则表达式和每个区域设置电话号码模式而烦恼。

只需将您的int电话号码转换为字符串。 然后你可以很容易地得到字符串的长度。

int myIntNumber = 1234;
String myStringNumber = String.valueOf(myIntNumber);

int length = myStringNumber.length();

这可以通过 lambda 轻松完成

"049-4912394129".codePoints().filter( Character::isDigit ).count();  // 13

如果您正在谈论由字符串 object 表示的数字,那么:

public int getNumberOfDigits(phoneNumber) {
   int count = 0;
   for (int i = 0, i < phoneNumber.length(); i++) {
       if (Character.isDigit(phoneNumber.charAt(i))) {
           count++;
       }
   }
   System.out.println("Number of digits: " + count);
   return count;
}

如果您正在谈论一个由 int 表示的数字,那么只需在使用它之前将其转换为 String,如下所示:

String phoneNumber = String.valueOf(phoneNumberInInt);  

我假设您确实想将零视为一个数字,因为您没有总结它们的值,因此当您谈论那里有多少个数字时,它们确实有意义。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM