如何从hashmap值中的字符串中提取或获取int vaue

时间:2016-03-24 14:16:54

标签: java hashmap

HashMap<String,String> dataRules = new HashMap<String,String>();

dataRules.put("FAX_GW_NW_ELE_DM_","VARCHAR2(32 BYTE)");

在上面给出的表达式中,我需要从要使用的值中提取32个BYTE作为int 32。谁能建议我怎么做呢?

3 个答案:

答案 0 :(得分:1)

package general;

import java.util.ArrayList;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class MatchNumber {

    public static ArrayList<Integer> extractInt(String mapValue) {
        Matcher matcher = Pattern.compile("\\d+").matcher(mapValue);

        //  throw new NumberFormatException("For input string [" + mapValue + "]");
        ArrayList<Integer> array = new ArrayList<Integer>();
        while (matcher.find()){
            array.add(Integer.parseInt(matcher.group()));
        }
        return array;
    }

public static void main(String[] args){
    ArrayList<Integer> result = extractInt("VARCHAR2(32 BYTE)");
    for (int i : result){
        System.out.println(i);
    }

  }
}

答案 1 :(得分:1)

假设你有固定的前缀和sufix,你可以像这样提取它

Integer.valueOf(strVal.substring(9,strVal.indexOf("BYTE)") ))

其中9是"VARCHAR2("的长度加1

答案 2 :(得分:0)

如果类型值(如varchar2)不同,但数字将全部写在paranthesis中,您可以使用String#replaceAll和捕获组来提取数字。

String input = "VARCHAR2(32 BYTE)";
System.out.println(input.replaceAll(".*\\((\\d*).*", "$1"));

输出

32