如何仅在Java中读取文本文件中的字母(a-z | | a-z)和数字(0-9)字符?

如何仅在Java中读取文本文件中的字母(a-z | | a-z)和数字(0-9)字符?,java,Java,所以我试着把字母或数字添加到字符列表中?我不想要任何空间或空间。或者,或者?或任何其他迹象。我只想要纯数字和字母表。我的部分代码如下: while((r = br.read()) != -1){ char c = (char) r; if (!((c == ' ') || (c == ',') || (c == '.') || (c == '?'))) output.add(c); } 您可以看到,我添加了一个if语句,用于检查空格或、或。或 有什么有效的方法可

所以我试着把字母或数字添加到字符列表中?我不想要任何空间或空间。或者,或者?或任何其他迹象。我只想要纯数字和字母表。我的部分代码如下:

while((r = br.read()) != -1){
    char c = (char) r;
    if (!((c == ' ') || (c == ',') || (c == '.') || (c == '?')))
        output.add(c);
}
您可以看到,我添加了一个if语句,用于检查空格或、或。或 有什么有效的方法可以做到这一点吗?因此,我不必在声明中包含所有符号,因此,使其更长

试试这个:

while((r = br.read()) != -1){
     char c = (char) r;
     if (Character.isDigit(c) || Character.isLetter(c)) { 
         output.add(c);
     }
}

如果要逐个字符检查此链接,可以参考此链接,这将很容易检查允许的内容,而不是不允许的内容,特别是因为您的标准只有三个范围:0-9、a-z和a-z。例如:

if ((c >= '0' && c <= '9') || (c >= 'a' && c <= 'z') || (c >= 'A' && c <= 'Z')) {
   output.add(c);
}
但是,如果您能够读取字符串,则可以使用正则表达式检查其有效性,例如:

if (s.matches("[0-9A-Za-z]*")) {
    output.add(s);
}
仅当字符串包含零个或多个数字以及任意顺序的小写或大写字母时,才会添加该字符串。当然,您可以将此解决方案用于一个字符串,尽管它不太受欢迎(对于字符,您最好使用
character
类)。

试试这个

if (Pattern.compile("[A-Za-z0-9]").matcher(String.valueOf(c)).matches()) {
    output.add(c);
}

有大量的
Character.is*
方法-可能是
Character.isAlphabetic
isDigit
是您需要的。您可以为此创建一个正则表达式,这将降低代码的复杂性。您可以针对ascii数字范围和a-z | a-z字母进行测试。这样,您将过滤所有不是数字或字母的内容。
if (Pattern.compile("[A-Za-z0-9]").matcher(String.valueOf(c)).matches()) {
    output.add(c);
}