【问题标题】:Check if a string match a defined pattern检查字符串是否与定义的模式匹配
【发布时间】:2018-04-03 01:11:16
【问题描述】:

我现在正在处理一项任务,我必须以“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();
        }
    }
}

【问题讨论】:

标签: java char digit letter


【解决方案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!");

【讨论】:

    【解决方案2】:

    简单地遍历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");
            }
    }
    

    【讨论】:

      【解决方案3】:

      你可以试试这个方法

      循环输入字符串,获取循环计数器位置的每个字符,然后比较每个字符的 ASCCI 值。如果你想要前 3 个字符作为字母,那么直到计数器为 2 将它们与 A-Z 的 ASCCI 值进行比较,将所有其他字符与 A-Z 的 ASCCI 值进行比较

      你可以试试下面的代码,可能有一些编译错误,因为我没有编译它:(

        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;
            }
           }
          }
         }
      

      【讨论】:

      • 我最近才开始学习编码,我不太确定我明白你的意思
      • 你有一个固定的格式来获取字符串吗?即前 3 个字母总是字母,后 3 个字母总是数字?字符串的长度为 9 ?
      • 是的,前三个是字母,后六个是数字,长度是9
      • 添加了一个代码,如果有编译错误请尝试删除并尝试执行它会起作用
      猜你喜欢
      • 2010-12-19
      • 1970-01-01
      • 2012-09-17
      • 1970-01-01
      • 1970-01-01
      • 2016-10-03
      • 1970-01-01
      • 2018-03-15
      • 2011-03-28
      相关资源
      最近更新 更多