如何以特定顺序验证字符串中的字符?
所以我应该使用扫描仪读取用户员工编号,然后将其放入返回布尔值的方法中。员工应该具有 DDDDD-LDDDD 形式,d 是数字,l 是字母。如果输入与此格式匹配,我应该通知用户他们有一个有效的数字,如果没有,那么我不得不说它是无效的。我试图分成两个子字符串,以便能够查看它们是否包含数字以及查看它是否包含字母。然后我尝试使用循环组合这些,如果它是那种格式,用户被告知它是有效的,如果不是,他们被告知它不是。除了破折号和字母之外,还有其他可能的方法来检查员工编号是否由数字组成,然后我可以用它来提示用户他们写的内容是否有效?这只是用Java编写的
回答
您可以使用正则表达式:
final String[] strings = {
"54321-A1234", // A valid employee ID
"012948B9832", // The dash is replaced with a number
"39832-30423", // The letter is replaced with a number
"24155-C90320", // A valid employee ID but the last number
};
for (String string : strings) {
if (string.matches("[0-9]{5}-[A-Za-z]{1}[0-9]{4}")) {
System.out.println("The string " + string + " is a valid pattern.");
} else {
System.out.println("The string " + string + " is an invalid pattern.");
}
}
这将输出
The string 54321-A1234 is a valid pattern.
The string 012948B9832 is an invalid pattern.
The string 39832-30423 is an invalid pattern.
The string 24155-C90320 is an invalid pattern.
解释:
-
[0-9]{5}意思是“完全匹配五位数字”; -
-表示“-完全匹配一次字符”; -
[A-Za-z]{1}意思是“只匹配一个字母,不区分大小写”; -
[0-9]{4}意思是“完全匹配四位数字”;
请注意,[0-9]可以替换为d并且这{1}是可选的,但我添加只是为了明确。