假设任何给定的字符串:如何根据预定义的字符集验证它?我想用ascii码 65-90 (A-Z), 33 (!), 36 ($), 38 (&), 63 (?)
.
我需要在整个字符串上应用正则表达式吗?还是逐字读取字符串并匹配 Integer
在预定范围内?
String test = "ASDQWE!&";
for (int i = 0; i < test.length; i++) {
int num = (int) val.charAt(i);
//TODO validate
}
3条答案
按热度按时间a1o7rhls1#
最好使用正则表达式。因为您可以用regex验证o(n)复杂度,但逐个匹配字符将具有o(m*n)复杂度。
qc6wkl3g2#
我很好奇,决定用jmh作为基准;以下是我的发现:
及其结果:
即使编译了一个模式,很明显
String
速度会更快,但使用正则表达式时可读性肯定更高。tquggr8v3#
使用对应于ascii 65-90的unicode字符范围:
您的示例字符串实际上与ascii65-90不匹配,但是
ASDQWE
,结尾没有标点符号,是。演示