检查字符串是否与定义的模式匹配

时间:2017-10-22 10:53:36

标签: java char digit letter

我正在进行一项任务,我必须在“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();
        }
    }
}

3 个答案:

答案 0 :(得分:1)

只需使用一种模式:

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!");

答案 1 :(得分:0)

你可以试试这种方式

循环输入字符串,并将每个字符放在循环的计数器位置,然后比较每个字符的ASCCI值。如果您想要前3个字符作为字母,那么直到计数器为2,将它们与AS-ACI的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;
      }
     }
    }
   }

答案 2 :(得分:0)

只需遍历String并使用Character类的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");
        }
}