Supposons que le type de données soit limité à 8 types de base + String. Les types numériques sont divisés en nombres entiers et en nombres à virgule flottante ; Les valeurs booléennes et les types de caractères sont plus faciles à juger Expressions régulières pour les entiers : ^-?[1-9]d*$ Expressions régulières pour les flottants ; nombres de points : ^[-]?[1-9]d*.d*|-0.d*[1-9]d*$ La valeur 0 doit être jugée séparément. C'est relativement simple, écrivez-la vous-même.
public static final String CHAR_PATTERN = "[^0-9]";
public static final String INT_PATTERN = "^-?[1-9]\d*$";
public static final String DOUBLE_PATTERN = "^[-]?[1-9]\d*\.\d*|-0\.\d*[1-9]\d*$";
public static Object convert(String item) {
// 忽略所有空字符串或全是空格的字符串
if (!StringUtils.hasText(item)) {
return null;
}
item = item.trim();
if ("true".equalsIgnoreCase(item) || "false".equalsIgnoreCase(item)) {
return Boolean.valueOf(item);
}
if (item.matches(CHAR_PATTERN)) {
return Character.toString(item);
}
if (item.matches(INT_PATTERN)) {
return Integer.valueOf(item);
}
if (item.matches(DOUBLE_PATTERN)) {
return Double.valueOf(item);
}
return item;
}
Le code ci-dessus est tapé à la main et peut être mal écrit.
Actuellement, tout ce à quoi je pense, c'est un jugement régulier
Supposons que le type de données soit limité à 8 types de base + String.
Les types numériques sont divisés en nombres entiers et en nombres à virgule flottante ;
Les valeurs booléennes et les types de caractères sont plus faciles à juger
Expressions régulières pour les entiers :
^-?[1-9]d*$
Expressions régulières pour les flottants ; nombres de points :
^[-]?[1-9]d*.d*|-0.d*[1-9]d*$
La valeur 0 doit être jugée séparément. C'est relativement simple, écrivez-la vous-même.
Le code ci-dessus est tapé à la main et peut être mal écrit.