在 Java 中比较字符
2022-08-31 13:39:33
我想检查一个char变量是21个特定char之一,我能做到的最短方法是什么?
例如:
if(symbol == ('A'|'B'|'C')){}
似乎不起作用。我需要这样写吗:
if(symbol == 'A' || symbol == 'B' etc.)
我想检查一个char变量是21个特定char之一,我能做到的最短方法是什么?
例如:
if(symbol == ('A'|'B'|'C')){}
似乎不起作用。我需要这样写吗:
if(symbol == 'A' || symbol == 'B' etc.)
如果你的输入是一个字符,并且你正在检查的字符大多是连续的,你可以试试这个:
if ((symbol >= 'A' && symbol <= 'Z') || symbol == '?') {
// ...
}
但是,如果您的输入是字符串,则更紧凑的方法(但速度较慢)是将正则表达式与字符类一起使用:
if (symbol.matches("[A-Z?]")) {
// ...
}
如果您有一个字符,则首先需要将其转换为字符串,然后才能使用正则表达式:
if (Character.toString(symbol).matches("[A-Z?]")) {
// ...
}
如果您事先知道所有21个字符,则可以将它们全部编写为一个字符串,然后像这样检查:
char wanted = 'x';
String candidates = "abcdefghij...";
boolean hit = candidates.indexOf(wanted) >= 0;
我认为这是最短的路。