为了账号安全,请及时绑定邮箱和手机立即绑定

判断字符串内容的类型

判断字符串内容的类型

幕布斯7119047 2019-03-13 14:15:23
需求是这样的,有一个字符串用逗号分隔str="123,2.36,abc"现在用String[] strList = str.trim().split(",");得到字符串数组要判断被分隔的字符串数组中每个元素的类型,加入一个list中,list不指定类型目的就是为了让list中有不同类型的元素除了写一个多类型的判断函数,遍历字符数组去分别判断,还有什么好的方法?
查看完整描述

2 回答

?
长风秋雁

TA贡献1757条经验 获得超7个赞

目前我能想到的就是正则判断了


查看完整回答
反对 回复 2019-04-25
?
MYYA

TA贡献1868条经验 获得超4个赞

假设数据类型仅限于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;

}

以上代码手敲,有可能写错。


查看完整回答
反对 回复 2019-04-25
  • 2 回答
  • 0 关注
  • 453 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信