检查字符串是否匹配定义的模式
Check if a string match a defined pattern
我现在正在做一项作业,我必须以 "ABC123456" 格式输入内容并查看它是否有效。我不明白如何检查每个字符是数字还是字母。这是我目前所拥有的:
import java.util.Scanner;
public class NetID {
public static void main(String[] args) {
Scanner input = new Scanner (System.in);
String userInput, char0thru2, char3thru8, uppercase, netID;
System.out.println("Please enter the NetID to verify:");
userInput = input.nextLine();
if (userInput.length() != 9) {
System.out.println("Your NetID needs to be 9 characters long, it needs to be in this format: ABC123456");
}
if (userInput.length() == 9){
char0thru2 = userInput.substring(0, 3);
char3thru8 = userInput.substring(3, 9);
uppercase = char0thru2.toUpperCase();
}
}
}
你可以这样试试
循环输入字符串,得到循环计数位置的每个字符,然后比较每个字符的ASCCI值。如果你想要前 3 个字符作为字母,那么直到计数器为 2 将它们与 A-Z 的 ASCCI 值进行比较,并将所有其他字符与 ASCCI 值 0-9
你可以试试下面的代码,可能有一些编译错误,因为我没有编译它:(
if(userInput.length==9)
{
for (int i =0;i<userInput.lenght;i ++){
if (i <3){
if(!(userInput.charAt(i)<91 &&userInput.charAt(i)>64)){
System.out.println("invalid string");
break;
}
}
if (i >2){
if(!(userInput.charAt(i)<58 &&userInput.charAt(i)>47)){
System.out.println("invalid string");
break;
}
}
}
}
只需遍历字符串并使用字符 class 的 isDigit(),示例代码如下,希望对您有所帮助:
String inp="qwerty43";
for(int i=0;i< myStr.length();i++){
if (Character.isDigit(myStr.charAt(i))) {
System.out.println("Digit Found");
} else {
System.out.println("Letter Found");
}
}
只需使用一个模式:
String userInput = "ABC133456";
if(!Pattern.matches("[A-Z]{3}[0-9]{6}", userInput))
System.out.println("Your NetID needs to be 9 characters long, it needs to be in this format: ABC123456");
else
System.out.println("Ok!");
我现在正在做一项作业,我必须以 "ABC123456" 格式输入内容并查看它是否有效。我不明白如何检查每个字符是数字还是字母。这是我目前所拥有的:
import java.util.Scanner;
public class NetID {
public static void main(String[] args) {
Scanner input = new Scanner (System.in);
String userInput, char0thru2, char3thru8, uppercase, netID;
System.out.println("Please enter the NetID to verify:");
userInput = input.nextLine();
if (userInput.length() != 9) {
System.out.println("Your NetID needs to be 9 characters long, it needs to be in this format: ABC123456");
}
if (userInput.length() == 9){
char0thru2 = userInput.substring(0, 3);
char3thru8 = userInput.substring(3, 9);
uppercase = char0thru2.toUpperCase();
}
}
}
你可以这样试试
循环输入字符串,得到循环计数位置的每个字符,然后比较每个字符的ASCCI值。如果你想要前 3 个字符作为字母,那么直到计数器为 2 将它们与 A-Z 的 ASCCI 值进行比较,并将所有其他字符与 ASCCI 值 0-9
你可以试试下面的代码,可能有一些编译错误,因为我没有编译它:(
if(userInput.length==9)
{
for (int i =0;i<userInput.lenght;i ++){
if (i <3){
if(!(userInput.charAt(i)<91 &&userInput.charAt(i)>64)){
System.out.println("invalid string");
break;
}
}
if (i >2){
if(!(userInput.charAt(i)<58 &&userInput.charAt(i)>47)){
System.out.println("invalid string");
break;
}
}
}
}
只需遍历字符串并使用字符 class 的 isDigit(),示例代码如下,希望对您有所帮助:
String inp="qwerty43";
for(int i=0;i< myStr.length();i++){
if (Character.isDigit(myStr.charAt(i))) {
System.out.println("Digit Found");
} else {
System.out.println("Letter Found");
}
}
只需使用一个模式:
String userInput = "ABC133456";
if(!Pattern.matches("[A-Z]{3}[0-9]{6}", userInput))
System.out.println("Your NetID needs to be 9 characters long, it needs to be in this format: ABC123456");
else
System.out.println("Ok!");