我正在尝试一种表达式验证方法,以确保传递给该函数的帐号是否有效。如果是,则返回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
您的代码将起作用。[[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
将解决该问题。)
accountNumber = Math.abs(accountNumber)
变量转换为int
以进行正则表达式匹配。使用String
辅助方法包装if条件。java.util.Objects.toString()
如果if (!Objects.toString(accountNumber).matches(pattern2))
已经是accountNumber
,则可以直接在Integer
变量上调用toString()
方法。您应该阅读有关Java自动装箱/拆箱的内容:
accountNumber
整数类型不要使用“匹配”方法
accountNumber应为字符串类型。
例如:
boolean b =“ abc” .matches(“ ^ \ d {1,10} $”);