Java 如何从hashmap值中的字符串中提取或获取int值 HashMap dataRules=newhashmap(); dataRules.put(“FAX_GW_NW_ELE_DM_”,“VARCHAR2(32字节)”);
在上面给定的表达式中,我需要从要使用的值中提取32字节作为int 32。有人能建议我怎么做吗?Java 如何从hashmap值中的字符串中提取或获取int值 HashMap dataRules=newhashmap(); dataRules.put(“FAX_GW_NW_ELE_DM_”,“VARCHAR2(32字节)”);,java,hashmap,Java,Hashmap,在上面给定的表达式中,我需要从要使用的值中提取32字节作为int 32。有人能建议我怎么做吗?软件包概述; HashMap<String,String> dataRules = new HashMap<String,String>(); dataRules.put("FAX_GW_NW_ELE_DM_","VARCHAR2(32 BYTE)"); 导入java.util.ArrayList; 导入java.util.regex.Matcher; 导入java.util
软件包概述;
HashMap<String,String> dataRules = new HashMap<String,String>();
dataRules.put("FAX_GW_NW_ELE_DM_","VARCHAR2(32 BYTE)");
导入java.util.ArrayList;
导入java.util.regex.Matcher;
导入java.util.regex.Pattern;
公共类匹配号{
公共静态ArrayList extractInt(字符串映射值){
Matcher Matcher=Pattern.compile(\\d+).Matcher(mapValue);
//抛出新的NumberFormatException(“对于输入字符串[“+mapValue+”]”);
ArrayList数组=新的ArrayList();
while(matcher.find()){
add(Integer.parseInt(matcher.group());
}
返回数组;
}
公共静态void main(字符串[]args){
ArrayList结果=extractInt(“VARCHAR2(32字节)”);
for(int i:结果){
系统输出打印LN(i);
}
}
}
假设您有固定的前缀和sufix,您可以这样提取它
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);
}
}
}
其中9是
“VARCHAR2的长度(“
加1如果类型值(如VARCHAR2)不同,但数字将始终用paradensis编写,您可以使用捕获组使用字符串#replaceAll
提取数字
Integer.valueOf(strVal.substring(9,strVal.indexOf("BYTE)") ))
输出
String input = "VARCHAR2(32 BYTE)";
System.out.println(input.replaceAll(".*\\((\\d*).*", "$1"));
另外,值得注意的是,您的问题实际上与值在映射中这一事实无关。您正在尝试从字符串“VARCHAR2(32字节)”中提取int值32-该字符串的来源至少有些不相关。@KevinEsche:在本例中,这将留下232…@JonSkeet my bad,没有真正看到varchar中的2…我正在尝试使用子字符串,希望它能工作,没问题。感谢OP的情况,由于VARCHAR2,它将返回2。现在这个示例应该同时打印2和32Actually它不工作。
strVal.indexOf(“VARCHAR2”(“)
返回0
。因此子字符串方法返回“VARCHAR2(32”
而不是32
正确,我修改了它。
32