所以我想在字母列表中添加字母或数字?我不想要任何空格或。或者,或?或任何其他标志。我只想要纯数字和字母。我的部分代码如下:
while((r = br.read()) != -1){
char c = (char) r;
if (!((c == ' ') || (c == ',') || (c == '.') || (c == '?')))
output.add(c);
}
你可以看到我添加了一个检查空格的if语句,或者。要么 ? 有没有有效的方法来做到这一点?因此,我不必在声明中包含所有符号,因此,使其更长。
答案 0 :(得分:4)
如果您逐个字符地检查它,那么很容易检查 允许的内容,而不是那些不允许的内容,特别是因为您的标准只有三个范围:0-9,az和AZ。例如:
if ((c >= '0' && c <= '9') || (c >= 'a' && c <= 'z') || (c >= 'A' && c <= 'Z')) {
output.add(c);
}
正如您所看到的,它不是最漂亮的代码,这就是为什么使用Java的内置Character.is?
方法会更好:
if (Character.isDigit(c) || Character.isLetter(c)) {
output.add(c);
}
但是,如果您能够阅读字符串,则可以使用正则表达式检查其有效性:
if (s.matches("[0-9A-Za-z]*")) {
output.add(s);
}
只有在任何序列中包含零个或多个数字以及小写或大写字母时,才会添加该字符串。当然,您可以将此解决方案用于单字符字符串,但它不太受欢迎(对于字符,您最好使用Character
类)。
答案 1 :(得分:2)
试试这个
if (Pattern.compile("[A-Za-z0-9]").matcher(String.valueOf(c)).matches()) {
output.add(c);
}
答案 2 :(得分:1)
试试这个:
while((r = br.read()) != -1){
char c = (char) r;
if (Character.isDigit(c) || Character.isLetter(c)) {
output.add(c);
}
}
您可以参考此链接How to check if a character in a string is a digit or letter