Java 简化代码-检查字符串中的第一个字符以匹配字符列表

Java 简化代码-检查字符串中的第一个字符以匹配字符列表,java,string,boolean,Java,String,Boolean,这就是我目前的代码 public static boolean isValidPiecePlacement(String piecePlacementString) { if (piecePlacementString.charAt(0) == 'A' || piecePlacementString.charAt(0) == 'B' || piecePlacementString.charAt(0) == 'C' || piecePlacementString.charAt(0

这就是我目前的代码

public static boolean isValidPiecePlacement(String piecePlacementString) {

    if (piecePlacementString.charAt(0) == 'A' || piecePlacementString.charAt(0) == 'B' ||
    piecePlacementString.charAt(0) == 'C' || piecePlacementString.charAt(0) == 'D' ||
    piecePlacementString.charAt(0) == 'E' || piecePlacementString.charAt(0) == 'F' ||
    piecePlacementString.charAt(0) == 'G'){
        return true;
    }


    return false;
它工作正常,但效率不高。我想知道是否有人知道怎么做 这是一种更有效的方法吗?代码只是检查第一个字符是否正确,即来自“A-G”的字符。它还必须返回true。谢谢

您可以为此使用正则表达式,例如:

String regex = "[A-G].*";
System.out.println("Asdsd".matches(regex));
System.out.println("Bsdsd".matches(regex));
System.out.println("Csdsd".matches(regex));
System.out.println("Dsdsd".matches(regex));
System.out.println("Hsdsd".matches(regex));
您可以为此使用正则表达式,例如:

String regex = "[A-G].*";
System.out.println("Asdsd".matches(regex));
System.out.println("Bsdsd".matches(regex));
System.out.println("Csdsd".matches(regex));
System.out.println("Dsdsd".matches(regex));
System.out.println("Hsdsd".matches(regex));
['A','G']是一个字符范围,因此可以简化为

public static boolean isValidPiecePlacement(String piecePlacementString) {
    if (piecePlacementString == null || piecePlacementString.length() == 0) {
        return false;
    }

    final char firstChar = piecePlacementString.charAt(0);

    if (firstChar >= 'A' && firstChar <= 'G') {
        // make other comparisons
        return true;
    }
    return false;
}
char是一种整数类型,因此像>=和['A',G']这样的数值比较运算符是一个字符范围,因此可以简化为

public static boolean isValidPiecePlacement(String piecePlacementString) {
    if (piecePlacementString == null || piecePlacementString.length() == 0) {
        return false;
    }

    final char firstChar = piecePlacementString.charAt(0);

    if (firstChar >= 'A' && firstChar <= 'G') {
        // make other comparisons
        return true;
    }
    return false;
}
char是整数类型,因此数值比较运算符>=和可以使用一组正确的第一个字符,如:

Set<Character> set = Set.of('A', 'B', 'C', 'D', 'E', 'F', 'G');
return set.contains(piecePlacementString.charAt(0));
您可以使用一组正确的第一个字符,如:

Set<Character> set = Set.of('A', 'B', 'C', 'D', 'E', 'F', 'G');
return set.contains(piecePlacementString.charAt(0));
字符实际上可以用作数值。每个字符的后面都有一个十进制表示形式,表示的是

字符A的十进制ASCII值为65,而G的十进制ASCII值为71

您可以将代码简化为

public static boolean isValidPiecePlacement(String piecePlacementString) {
    char c = piecePlacementString.charAt(0);
    return c >= 'A' && c <= 'G';
}
字符实际上可以用作数值。每个字符的后面都有一个十进制表示形式,表示的是

字符A的十进制ASCII值为65,而G的十进制ASCII值为71

您可以将代码简化为

public static boolean isValidPiecePlacement(String piecePlacementString) {
    char c = piecePlacementString.charAt(0);
    return c >= 'A' && c <= 'G';
}

您只需返回以下内容:


返回ABCDEFG.indexOfpiecePlacementString.charAt0>-1

您只需返回以下内容:

返回ABCDEFG.indexOfpiecePlacementString.charAt0>-1

我们可以使用正则表达式:

String regex = "(^[A-G].*)";
System.out.println("Adfgh".matches(regex));
我们可以使用正则表达式:

String regex = "(^[A-G].*)";
System.out.println("Adfgh".matches(regex));

这很好,我应该补充一点,我需要为第二个和第三个角色也这样做。但是,第二个字符必须来自'A'-'Z',第三个字符必须来自'A'-'F'。我想通过查看第一个的解决方案,我可以完成其余的工作,但是,您的解决方案会返回一个最终语句。如果更新,您可以在if语句下编写其他条件,或者在一个条件内使其更复杂。这很好,我应该补充一点,我也需要为第二个和第三个角色这样做。但是,第二个字符必须来自'A'-'Z',第三个字符必须来自'A'-'F'。我认为通过查看第一个的解决方案,我可以完成其余的工作,但是,您的解决方案会返回一个最终语句。如果更新,您可以在if语句下编写其他条件,或者在一个条件中使其更复杂