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语句下编写其他条件,或者在一个条件中使其更复杂