需求是这样的,有一个字符串用逗号分隔str="123,2.36,abc"
现在用String[] strList = str.trim().split(",");得到字符串数组
要判断被分隔的字符串数组中每个元素的类型,加入一个list中,list不指定类型
目的就是为了让list中有不同类型的元素
除了写一个多类型的判断函数,遍历字符数组去分别判断,还有什么好的方法?
需求是这样的,有一个字符串用逗号分隔str="123,2.36,abc"
现在用String[] strList = str.trim().split(",");得到字符串数组
要判断被分隔的字符串数组中每个元素的类型,加入一个list中,list不指定类型
目的就是为了让list中有不同类型的元素
除了写一个多类型的判断函数,遍历字符数组去分别判断,还有什么好的方法?
假设数据类型仅限于8种基本类型+String。
其中数值类型分为整数和浮点数;
布尔值和字符型比较好判断;
整数的正则表达式:^-?[1-9]\d*$
浮点数的正则表达式:^[-]?[1-9]\d*\.\d*|-0\.\d*[1-9]\d*$
其中0值要另外判断,这个比较简单,自己写。
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;
}
以上代码手敲,有可能写错。
4 回答1.4k 阅读✓ 已解决
4 回答1.2k 阅读✓ 已解决
1 回答2.6k 阅读✓ 已解决
2 回答733 阅读✓ 已解决
2 回答1.7k 阅读
2 回答1.7k 阅读
2 回答1.3k 阅读
目前我能想到的就是正则判断了