java - 如何在第一个位置 (0) 之后正确分割该字符串,以便读取 0 之后的一个或多个字符?

标签 java split playing-cards

基本上我有这个代码,输入 2 OR 3 个字母/数字组合,如(AH、10D、JS 和 7C),读回花色的值(红桃 A、方 block 10、黑桃 J、梅花 7。)

为什么如果我输入“10D”,代码没有打印任何内容?为什么不是寄存器10?我怎样才能解决这个问题? 另外:请帮我弄清楚如何将案例 2 - 案例 10 范围缩短为更 Eloquent 内容?我无法使用 if-then-else 语句。

System.out.print("Please enter a letter/integer of a playing card (A, J, Q, K, or 2 - 10),\nfollowed by card type (D, H, S, C):");
    Scanner kbd = new Scanner(System.in);
    String userInput = kbd.next().toUpperCase();
    String valueofCard = userInput.substring(0, userInput.length() / 2);  // gives first half of string
    String suitofCard = userInput.substring(userInput.length() / 2); //give last half of string with + 1 if odd
    StringBuilder result = new StringBuilder();

    switch (valueofCard) {
    case "A":
        result.append("Ace of ");
        break;
    case "J":
        result.append("Jack of ");
        break;  
    case "Q":
        result.append("Queen of ");
        break;  
    case "K":
        result.append("King of ");
        break;
    case "2":
    case "3":
    case "4":
    case "5":
    case "6":
    case "7":
    case "8":
    case "9":
    case "10":          
        result.append(valueofCard + " of ");
    break;  
        }

    switch (suitofCard) {
    case "D":
        result.append("Diamonds");
        break;  
    case "H":
        result.append("Hearts");
        break;      
    case "S":
        result.append("Spades");
        break;      
    case "C":
        result.append("Clubs");
        break;
        }

    System.out.println(result.toString());

    kbd.close();

最佳答案

如果您使用正则表达式,它也会拒绝您的错误输入。

正则表达式:([AJQK2-9]|10)([DHSC])

示例代码:

String card = "QS"; // Queen of Spades

Pattern cardPattern = Pattern.compile("([AJQK2-9]|10)([DHSC])");

Matcher m = cardPattern.matcher(card);
if (! m.matches()) {
    System.out.println("Not a valid card: " + card);
} else {
    String rank = m.group(1);
    String suit = m.group(2);
    // code here
}

关于java - 如何在第一个位置 (0) 之后正确分割该字符串,以便读取 0 之后的一个或多个字符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39864533/

相关文章:

Java 字符串类方法,拆分和替换

java - T 具有不兼容的边界 - Java 泛型

Java Weka new Instances 实例索引属性列表

java - 在方法中处理不同的实例变量

java - 使用 rJava 导入的静态 Java 函数不适用于 tm_map()

java - 寻找结果为 24 的算术运算

java - Hibernate创建SQL查询在WHERE子句中连接多个查询

python - 用 python 分割数据框

r - R中最后一个逗号分割的字符串