你怎么在这里只使用一次?

时间:2017-10-23 16:57:59

标签: java string equals

if (someString.equals('a') || someString.equals('b') ||    someString.equals('c') || someString.equals('d'))

如何缩短此语法不会重复等于?

3 个答案:

答案 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。字符串无法与><==进行比较,但字符可以。因此,通过提取字符串的第一个字符,您可以自己检查数值范围