Как определить происхождение символа от клавиатуры (при чтении содержимого файла)

Я анализирую файлы CSV, и иногда могу столкнуться с нелегальными файлами, такими как jpeg или pdf и т. Д.

Поэтому, когда я анализирую содержимое файла, я хочу определить, является ли символ законным (исходит от клавиатуры), например 5 & %! и так далее...

Но не символы, подобные этому: ַ ַ и другие странные символы, которые можно найти в изображениях PDF-файлов и других файлов

Я не хочу проверять mime-тип файла и предпочитаю не добавлять несколько сторонних jar-файлов для решения этой проблемы. Я хочу выяснить, что анализируемый файл действителен, посмотрев его символы

Это что-то похожее на Character.isLetterOrDigit это может сказать, является ли символ, который был напечатан с клавиатуры, или какой-то странный символ, как like

* Еще одна вещь, которую я должен иметь возможность принимать символы разных языков (не только английский), поэтому я хочу избегать сравнения простых символов, например c <= 32 && c >= 126 и так далее...


Кстати, в общем, я ищу ответ на проблему, описанную в этом вопросе проверки файла CSV с Java

1 ответ

Если вы ищете встроенную функцию, я не знаю ее. Вы можете, однако, посмотреть на charЗначение ascii и фильтр по своему вкусу. Проверьте эту таблицу ASCII для значений.

Вы можете сказать, например, если значение ascii <= 32 && >= 126, вы не примете это; в противном случае вы будете:

public boolean isValid(char c) {
    if (c <= 32 && c >= 126) {
        return false;
    } else {
        return true;
    }
}

Если вы работаете на всей линии /String, вы могли бы использовать это, чтобы удалить ваши действительные символы и определить, остались ли какие-либо недопустимые символы:

public boolean isValid(String s) {
    return s.replaceAll("\\w|\\p{Punct}", "").length() == 0;
}
Другие вопросы по тегам