当前位置: 首页 > 知识库问答 >
问题:

如何计数的数字破折号(-)在电话号码字符串输入验证?

澹台庆
2023-03-14

我有一个程序,读取用户输入的电话号码,并返回国家代码(如果存在)、区号(如果存在)和本地7位电话号码
号码必须输入为countrycode area local。所以,电话号码中最多可以有两个虚线。

例如:
1-800-5555678有两个破折号(有国家代码和区号)
800-5555678有一个破折号(只有区号)
5555678没有破折号(只有本地号码)

所以,零破折号、一破折号或两破折号都可以,但不能超过两个。


我想弄清楚的是,如何计算字符串中虚线(“-”)的数量,以确保它们的实例不超过两个。如果有,它会打印一个错误。

到目前为止,我已经:

if(phoneNumber ///contains more more than two dashed
{
    System.out.println("Error, your input has more than two dashes. Please input using the specified format.");
{
else
{
    //normal operations
}

到目前为止,除了这一部分,一切都正常。我不确定用什么方法来做这件事。我试着看indexOf,但我被难倒了。

共有3个答案

毋澄邈
2023-03-14

类似于这样。循环查看字符串中的字符,看看它们是否是-

int nDashes = 0;
for (int i=0; i<phoneNumber.length(); i++){
    if (phoneNumber.charAt(i)=='-')
        nDashes++;
}
if (nDashes>2){
    //do something
}
嵇丰
2023-03-14
String phoneNumber = "1-800-5555678";
int counter = 0;
for( int i=0; i< phoneNumber.length(); i++ ) {
  if( phoneNumber.charAt(i) == '-' ) {
    counter++;
  } 
}

if(counter > 2) ///contains more more than two dashed
{
  System.out.println("Error, your input has more than two dashes. Please input using the     specified format.");
{
else
{
 //normal operations
}
谭研
2023-03-14

一种方法是将数字解析为字符串,然后在破折号上拆分。如果得到的新数组长度大于3,则给出一个错误。

String s = "1-800-5555678";
String parts[] = s.split("-");
if (parts.length > 3) {
    System.out.println("error");
} else {
    // do something
}

samrap建议的一个更节省内存的解决方案是:

String s = "1-800-555-5678";
int dashes = s.split("-").length - 1;
if (dashes > 2) {
    System.out.print("error");
} else {
    // do something
}
 类似资料:
  • 问题内容: 我知道如何遍历字符串中的所有字符,但是我正在寻找一种更优雅的方法。 问题答案: 正则表达式只需很少的代码即可解决问题:

  • 问题内容: 我对Java和Android都缺乏经验。我正在尝试检索存储在android手机模拟器的联系人之一中的电话号码。当我成功获取它时,该数字已以字符串形式返回,格式为“(987)654-3210”。我想将其转换为整数或长整数。我怎样才能做到这一点?如果使用,它将返回一个。尝试使用时也失败。那我该怎么办?我想要没有任何大括号或连字符的“ 9876543210”。 问题答案: 使用储存号码会更好

  • 我必须拆分一个包含破折号和减号的字符串。我试图根据unicode字符进行拆分(https://en.wikipedia.org/wiki/Hyphen#Unicode),仍然考虑减号与破折号字符相同。我如何解决它? 预期产出 (国家) (美国) -1个 实际输出量 (国家) (美国) //实际上,这里会打印空行,但编辑器会压缩空行 1. 我想在字符串连接期间会发生一些转换,但不确定。欢迎任何解决这

  • 问题内容: 我有一个带有文本区域的表格。用户输入存储在数据库中的文本块。 有时,用户会从Word中粘贴包含智能引号或引号的文本。这些字符在数据库中显示为:“,”,“,”。 我应该在输入字符串上调用什么函数以 将智能引号转换为正则引号,并将破折号转换为正破折号 ? 我正在使用PHP。 更新:感谢您到目前为止的所有好评。Joel网站上有关编码的页面内容非常丰富:http://www.joelonsof

  • 我正在编写文件上传页面脚本(Javascript)。用户从他们的机器中选择一个文件。 我需要从包含文件名的字符串中删除任何不是: 一封信 我一直在尝试使用Javascript替换函数来删除不必要的字符。我可以使用以下方法删除所有非字母数字部分: 这会留下字母、数字和下划线,但我还需要允许破折号和句点。我不确定选择破折号和句点的正确正则表达式是什么。