簡體   English   中英

如何僅使用Java從文本文件中讀取字母(az || AZ)和數字(0-9)字符?

[英]How to read alphabets (a-z || A-Z) and digits (0-9) characters from a text file only in Java?

所以我想將字母或數字添加到字符列表中嗎? 我不想有任何空格或。 或,或? 或其他任何標志。 我只想要純數字和字母。 我的部分代碼如下:

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);
     }
}

您可以參考此鏈接。 如何檢查字符串中的字符是數字還是字母

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM