我试图编写一个小程序,从用户读取车牌号码,如果有效则返回。我不太确定如何循环查看某些字符是否正确。
注意:这应该是冰岛牌照号码牌。
使用冰岛牌照号码牌,前2个字符是大写字母。第三个字符可以是大写字母或数字,最后2个字符也必须是数字。以下是有效牌照的示例:" HX567"。
无论如何,到目前为止,这里是我的代码,希望有人在这里可以告诉我如何循环字符串并检查前2个字符是否是字母和大写等.......
import java.util.Scanner;
import java.util.*;
public class Bilnumer {
public static void main(String[] args) {
Scanner skanni = new Scanner(System.in);
System.out.println("Good day, please enter your license plate number.");
System.out.println("License plate number: ");
String bilnumer = skanni.nextLine();
bilnumer = bilnumer.toUpperCase();
int lengd = bilnumer.length();
if (lengd > 5)
{
System.out.println("License plate numbers can not be more then 5 characters");
}else{
System.out.println("Your license plate number is: "+bilnumer);
}
}
}
答案 0 :(得分:1)
您可以使用正则表达式:
Matcher m = Pattern.compile("[A-Z][A-Z]([A-Z]|\\d)\\d\\d").matcher(bilnumer);
if (m.find()) {
System.out.println(bilnumer + " is a valid number plate");
} else {
System.out.println(bilnumer + " is not a valid number plate");
}
从维基百科中提取:' ...正则表达式(缩写为regex或regexp)是形成搜索模式的字符序列,主要用于与字符串'进行模式匹配。所以这里:[A-Z][A-Z]([A-Z]|\\d)\\d\\d
我做了一个表达式,由两个大写字母,一个大写字母或一个数字后跟两个数字组成。
进一步打破表达:
[A-Z]
表示从A到Z(所以大写字母)
\\d
表示数字。
|
是java