带有.matches的整数验证问题

问题描述 投票:0回答:3

我正在尝试一种表达式验证方法,以确保传递给该函数的帐号是否有效。如果是,则返回true,如果为false,则返回false。

但是我遇到错误:

Cannot Resolve method(java.lang.string) 

我查看了几个stackoverflow问题,但似乎无法弄清楚我在代码中做错了什么。

accountNumber  = integer data type
this.AccountNumber  = integer data type 

代码:

String pattern2 = "^\d{1,10}$" ;
        if (!accountNumber.matches(pattern2)) {
            return false;
        } else {
            this.AccountNumber = accountNumber;
            return true;
        }

我正在从https://www.freeformatter.com/java-regex-tester.html#ad-output

java
3个回答
4
投票

您的代码将起作用。[[if accountNumber是字符串。 java.lang.String有一个matchs方法,可以根据正则表达式评估String。

但是您可以使用一个整数。因此,您有两个选择:

    将整数转换为字符串,然后您的代码将起作用:
  • java.lang.String
      或者,由于您只是尝试对数字进行计数,因此您可以只使用Math。您声明需要确定整数是否在5到9之间,因此,它的理由是其值在10,000到999,999,999之间(假设9个数字有效,否则取9的其中之一)。做类似的事情:
  • String converted = String.valueOf(accountNumber); String pattern2 = "^\\d{1,10}$" ; if (!converted.matches(pattern2)) { // use the converted String to compare return false; } else { this.AccountNumber = accountNumber; return true; }
    ((当然,这假设您在if ( 10_000 <= accountNumber && accountNumber <= 999_999_999 ) {
      // this meets your condition
    } else {
      // the number of digits is wrong.
    }
    中没有负值。调用accountNumber将解决该问题。)

  • 0
    投票
    您需要将accountNumber = Math.abs(accountNumber)变量转换为int以进行正则表达式匹配。使用String辅助方法包装if条件。

    java.util.Objects.toString()

    如果if (!Objects.toString(accountNumber).matches(pattern2))
    已经是accountNumber,则可以直接在Integer变量上调用toString()方法。 

    您应该阅读有关Java自动装箱/拆箱的内容:accountNumber


    0
    投票
    accountNumber =整数数据类型?

    整数类型不要使用“匹配”方法

    accountNumber应为字符串类型。

    例如:

    boolean b =“ abc” .matches(“ ^ \ d {1,10} $”);

    © www.soinside.com 2019 - 2024. All rights reserved.