And*_*rew 1 java string format
我正在尝试创建程序,要求用户输入特定格式的序列号,程序将验证代码是否有效.
格式应为2个数字,后跟短划线,4个数字,一个点,然后是4个数字和2个字母(注意:接受的字母只有a,b,c).
有效格式示例:
31-0001.2341ac
00-9999.0001cb
Run Code Online (Sandbox Code Playgroud)
如果字符串的长度比格式(长度为14个字符)更长/更短,则应显示无效.同样的事情,如果使用其他字符,它也会说无效.
这是我到目前为止所做的代码.我不知道如何才能达到指定的格式.希望有人可以帮忙..
import java.util.Scanner;
public class SerialCheck{
public static void main (String[] args){
Scanner sc = new Scanner(System.in);
System.out.print("How many serial numbers would you like to check: ");
int length = sc.nextInt();
int valid = 0;
String[] sSerials = new String[length];
for (int nCtr = 0; nCtr < length; nCtr++){
System.out.print ("Enter Serial " + (nCtr+1) + ": ");
sSerials[nCtr] = sc.next();
}
System.out.println();
System.out.println("The following were added: ");
for(int nCtr = 0; nCtr < length; nCtr++){
System.out.println(sSerials[nCtr]);
}
System.out.println();
for(int nCtr = 0; nCtr < length; nCtr++){
for (int x = 0; x < sSerials[nCtr].length(); x++){
char c = sSerials[nCtr].charAt(x);
if((sSerials[nCtr].charAt(x)!='a') ||
(sSerials[nCtr].charAt(x)!='b') ||
(sSerials[nCtr].charAt(x)!='c') ||
(sSerials[nCtr].charAt(x)!='-') ||
(sSerials[nCtr].charAt(x)!='.')){
valid--;
}
else{
valid++;
}
}
if (valid < 0 && sSerials[nCtr].length() != 14){
System.out.println("The address is invalid.");
}
else{
System.out.println("The address is valid.");
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
我经常发帖说"不要使用正则表达式".但在这种情况下:使用正则表达式.他们是这项工作的正确工具.
boolean isValid = sSerials[nCtr].matches(
"[0-9]{2}" // Match 2 digits
+ "-" // Then a dash
+ "[0-9]{4}" // Then 4 digits
+ "\\." // Then a dot (which must be escaped)
+ "[0-9]{4}" // Then 4 digits
+ "[abc]{2}" // Then 2 a, b or c.
Run Code Online (Sandbox Code Playgroud)
这个正则表达式只是为了解释它的一部分而分开.您可以在一行中写入字符串文字:
boolean isValid =
sSerials[nCtr].matches("[0-9]{2}-[0-9]{4}\\.[0-9]{4}[abc]{2}");
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
319 次 |
| 最近记录: |