记录缘由:
公司项目需要从xml中获取标识为NUMBER的字符串,将之存入数据库中,存入的列的类型即为NUMBER。当遇到非数字时,原实现是通过异常:
String plainValue = null;
try { plainValue = new BigDecimal(colValue).toPlainString(); } catch (Exception e) { plainValue = ""; }
没有去研究过BigDecimal(String)这个构造方法的内部实现,得空去研究一下。只是觉得无必要还是尽量不利用异常去做逻辑处理,所以这里用正则表达式实现:
private static final String NUMBER_REGEX = "([0-9]\d*\.?\d*)|((-)?[0-9]\d*\.?\d*)"; public static boolean matcher(String value) { Matcher matcher = pattern.matcher(value); return matcher.matches(); } public String getTransferValue(String colValue){
String plainValue = matcher(colValue) ? colValue : ""; return plainValue; }
以上。小白一个,欢迎指正!