只将数字字符串放入hashmap

时间:2014-02-24 07:53:27

标签: java regex arraylist hashmap

我正在尝试从ArrayList构建一个hashMap,它包含我需要的所有变量及其各自的值。

问题是,我的arrayList包含非数值的变量(例如:var1 =“ * $& / @”)。如何过滤arrayList中包含的数据以仅获取数字字符串。

我尝试使用正则表达式,但数据过滤太多而且我需要的一些变量会丢失。我想我没有使用合法的正则表达式。所以我尝试匹配以下正则表达式,如果没有,请为我的变量赋值“0”。这大致是我到目前为止所尝试的内容:

       private static final String REGEX = "-?\\d+(\\.\\d+)?";

       //...

       if (val_ens1_sol.matches(REGEX) && val_ens1_bord.matches(REGEX)) {

                 reslutatsMap.put(key_ens1_sol, val_ens1_sol);
                 reslutatsMap.put(key_ens1_bord, val_ens1_bord);

              } else {
                 val_ens1_sol = "0";
                 val_ens1_sol = "0";

              }

2 个答案:

答案 0 :(得分:1)

已经在其他地方(How to check if a String is numeric in Java)回答了这个问题,但讨论了可能性:要么假设你有数字字符串,解析字符串是整数或双精度并捕获数字格式异常,要么使用正则表达式

答案 1 :(得分:0)

你可以使用BigDecimal执行此操作,它将解析所有整数/小数点浮点数/科学浮点数:

try {
    new BigDecimal(val_ens1_sol);
    new BigDecimal(val_ens1_bord);
} catch (NumberFormatException ignored) {
    // deal with at least one value not being a number
}