if (someString.equals('a') || someString.equals('b') || someString.equals('c') || someString.equals('d'))
如何缩短此语法不会重复等于?
答案 0 :(得分:2)
正则表达式(请注意它比原始表达式慢很多):
if (someString.matches("[abcd]")
流:
if (Arrays.stream(new String[] { "a", "b", "c", "d"}).anyMatch(input::equals))
答案 1 :(得分:2)
在你的回答中,你似乎想要比较字符串。在这种情况下,我会使用这样的数组语法:
final String[] arr = {"a", "b", "c", "d"};
if(Arrays.asList(arr).contains("a")){
// Do Stuff
}
如果您只是想比较单个字符,@ AdamSiemion使用正则表达式的答案就是现货。
答案 2 :(得分:0)
如果目标只是清晰和简洁,您可以随时查看角色的ASCII值。
char c = someString.charAt(0);
if (c >= 'a' && c <= 'd'){
// do whatever
}
要理解这一点,您必须了解String由存储在数组中的一系列字符组成。 (当然,它变得更复杂,但这是一个很好的起点。)
这些字符中的每一个最终都被编码为数字。计算机基本上有一个预先构建的查找表,其中某些数字引用某些字符。在该字符表中,'a'
,'b'
,'c'
(等)的数字彼此相邻,并且每次都增加一个。
了解当您使用'a'
时,您正在引用该角色,这一点也很重要。相反,当您使用"a"
时,您正在引用一个String。字符串无法与>
,<
或==
进行比较,但字符可以。因此,通过提取字符串的第一个字符,您可以自己检查数值范围