在 Java 中比较字符

新手上路,请多包涵

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

例如:

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

似乎没有用。我需要这样写吗:

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

原文由 Alex 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 553
2 个回答

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

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


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

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

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

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

原文由 Mark Byers 发布,翻译遵循 CC BY-SA 2.5 许可协议

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

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

我认为这是最短的方法。

原文由 Marc 发布,翻译遵循 CC BY-SA 2.5 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题