在 Java 中比较字符

2022-08-31 13:39:33

我想检查一个char变量是21个特定char之一,我能做到的最短方法是什么?

例如:

if(symbol == ('A'|'B'|'C')){}

似乎不起作用。我需要这样写吗:

if(symbol == 'A' || symbol == 'B' etc.)

答案 1

如果你的输入是一个字符,并且你正在检查的字符大多是连续的,你可以试试这个:

if ((symbol >= 'A' && symbol <= 'Z') || symbol == '?') {
    // ...
}

但是,如果您的输入是字符串,则更紧凑的方法(但速度较慢)是将正则表达式与字符类一起使用:

if (symbol.matches("[A-Z?]")) {
    // ...
}

如果您有一个字符,则首先需要将其转换为字符串,然后才能使用正则表达式:

if (Character.toString(symbol).matches("[A-Z?]")) {
    // ...
}

答案 2

如果您事先知道所有21个字符,则可以将它们全部编写为一个字符串,然后像这样检查:

char wanted = 'x';
String candidates = "abcdefghij...";
boolean hit = candidates.indexOf(wanted) >= 0;

我认为这是最短的路。


推荐