【问题标题】:How do I go through the String to make sure it only contains numbers in certain places?如何检查字符串以确保它仅在某些地方包含数字?
【发布时间】:2015-09-30 05:27:04
【问题描述】:

我正在写一些东西,它将接受用户输入的电话号码,并根据五个参数告诉用户他们的输入是否有效:

  1. 输入长度为 13 个字符
  2. 索引 0 处的字符为 '('
  3. 索引 4 处的字符是 ')'
  4. 索引 8 处的字符为 '-'
  5. 所有其他字符必须是以下数字之一:“0”到“9”(含)。

到目前为止,除了第 5 个参数之外,我已经完成了所有工作。我的代码如下

   if (number.contains("[0-9]+"))
    {
        ints = true;

        if (number.contains("[a-zA-Z]*\\d+."))
        {
            ints = false;
        }
    }
    else 
    {
        ints = false;
    }

(旁注:number 是我的字符串,它是用户的输入,ints 是前面代码中声明的布尔值)。

【问题讨论】:

  • 匹配正则表达式而不是检查包含
  • 你可以写一个正则表达式并与之匹配
  • String.contains() 不将正则表达式作为输入。这永远不会符合您的要求。

标签: java regex string if-statement


【解决方案1】:

这是一个正则表达式。

    Pattern p = Pattern.compile("^\\(\\d{3}+\\)\\d{3}+-\\d{4}");
    System.out.println(p.matcher("(916)628-4563").matches());
    System.out.println(p.matcher("( 916 ) 628-4563").matches());

输出:


输入这样的数据可能很困难,当接收到用户输入时,您应该尝试限制他们的选项。例如。询问电话号码的每一部分,并省略 (,) 和 -。

由于操作添加了新要求。首先检查所需的 (,) 和 -'s。

boolean goodNumber = number.find("(")==0&&number.find(")")==4
goodNumber = goodNumber&&number.find("-")==8
goodNumber = goodNumber&&number.length()==13&&
goodNumber = goodNumber&&number.replaceAll("\\d","").length()==3;

找到括号和破折号,然后删除所有数字,看看是否只剩下括号和破折号。

【讨论】:

  • 我希望我可以,因为这更有意义,但是对于作业,教授希望这一切都可以通过使用布尔值和 if else 语句的一个用户输入来完成
  • @Dakota 接受的答案与我最初提供给您的答案有何不同?
【解决方案2】:

您可以使用以下。如果字符串正确,它将打印valid,否则将打印invalid

public void compare(){        
    String inputString="(123)848-3452";
    if(inputString.matches("^\\([0-9]{3}\\)[0-9]{3}-[0-9]{4}")){
        System.out.println("valid");
    }else{
        System.out.println("invalid");
    }
}

【讨论】:

  • 这很完美,我只使用了第一个 if 语句,然后输入“ints = true;”而不是您拥有的 System.out.println。非常感谢。
【解决方案3】:

你可以有一个像这样的简单正则表达式

Pattern pattern = Pattern.compile("\\(\\d{3}\\)\\d{3}\\-\\d{4}");
Matcher matcher = pattern.matcher("(071)234-2434");
System.out.println(matcher.matches());

【讨论】:

    猜你喜欢
    • 2014-05-07
    • 2015-03-15
    • 2011-03-31
    • 2016-08-09
    • 1970-01-01
    • 1970-01-01
    • 2019-12-29
    • 2018-05-01
    相关资源
    最近更新 更多