Как определить происхождение символа от клавиатуры (при чтении содержимого файла)
Я анализирую файлы 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;
}