HashMap<String,String> dataRules = new HashMap<String,String>();
dataRules.put("FAX_GW_NW_ELE_DM_","VARCHAR2(32 BYTE)");
In the above given expression I need to extract 32 BYTE as int 32 from value to use. Can anyone suggest how I can do this?
HashMap<String,String> dataRules = new HashMap<String,String>();
dataRules.put("FAX_GW_NW_ELE_DM_","VARCHAR2(32 BYTE)");
In the above given expression I need to extract 32 BYTE as int 32 from value to use. Can anyone suggest how I can do this?
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);
}
}
}
Assuming you have the fixed prefix and sufix you can extract it like this
Integer.valueOf(strVal.substring(9,strVal.indexOf("BYTE)") ))
where 9 is length of "VARCHAR2(" plus 1
strVal.indexOf("VARCHAR2(") returns 0. So substring method returns "VARCHAR2(32" instead of 32in case the the type value, as varchar2, will differ, but the number will be allways written in paranthesis you could use String#replaceAll with a capturing group to extract the number.
String input = "VARCHAR2(32 BYTE)";
System.out.println(input.replaceAll(".*\\((\\d*).*", "$1"));
output
32