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