当前位置: 代码迷 >> java >> 如何仅使用Java从文本文件中读取字母(az || AZ)和数字(0-9)字符?
  详细解决方案

如何仅使用Java从文本文件中读取字母(az || AZ)和数字(0-9)字符?

热度:38   发布时间:2023-07-31 13:34:57.0

所以我想将字母或数字添加到字符列表中吗? 我不想有任何空格或。 或,或? 或其他任何标志。 我只想要纯数字和字母。 我的部分代码如下:

while((r = br.read()) != -1){
    char c = (char) r;
    if (!((c == ' ') || (c == ',') || (c == '.') || (c == '?')))
        output.add(c);
}

您可以看到我添加了一个if语句,用于检查空格或或。 要么 ? 有什么有效的方法可以做到这一点吗? 这样我就不必在声明中包含所有符号,因此可以使其更长。

如果你检查它字符一个字符,它会很容易检查什么允许的,而不是什么不是,特别是因为你的标准只有三个范围: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类)。

尝试这个

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

尝试这个:

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

您可以参考此链接。

  相关解决方案