Нет волшебного решения. Вы должны анализировать и анализировать ваши строки за строкой.
Чтобы отличить Integer вы можете использовать
Integer.parseInt(s)
и если ParsingException не отбрасывается предположить, что данные Integer. То же самое касается Double. Дата, вероятно, является проблемой, поскольку дата может отображаться в разных форматах.
Я думаю, что в вашем случае, чтобы упростить вам код, лучше использовать шаблоны:
Pattern[] patterns = Pattern[] {Pattern.compile("^\\d+$"), Pattern.compile("^\\d+\\.\\d*$"), Pattern.compile("^\\d{1,2}/\\d{1,2}/\\d{1,2}$")};
Class<?> types = new Class[] {Integer.class, Double.class, Date.class};
for (int i - 0; i < patterns.length; i++) {
if (patterns[i].matches(str)) {
return types[i];
}
}
return null;
Как был создан этот текстовый файл? –