fwq
2024-09-23 55334da20cff4dac840c320eda1d0ca53ba27eda
src/main/java/com/hx/util/NumberUtil.java
@@ -3,6 +3,8 @@
import java.math.BigDecimal;
import java.math.RoundingMode;
import java.text.DecimalFormat;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
/**
 * 数字工具
@@ -351,4 +353,66 @@
        return result2;
    }
    /**
     * 从字符串中提取小数
     * @param str
     * @return
     */
    public static String getNumber(String str){
        // 控制正则表达式的匹配行为的参数(小数)
        Pattern p = Pattern.compile("(\\d+\\.\\d+)");
        //Matcher类的构造方法也是私有的,不能随意创建,只能通过Pattern.matcher(CharSequence input)方法得到该类的实例.
        Matcher m = p.matcher(str);
        //m.find用来判断该字符串中是否含有与"(\\d+\\.\\d+)"相匹配的子串
        if (m.find()) {
            //如果有相匹配的,则判断是否为null操作
            //group()中的参数:0表示匹配整个正则,1表示匹配第一个括号的正则,2表示匹配第二个正则,在这只有一个括号,即1和0是一样的
            str = m.group(1) == null ? "" : m.group(1);
        } else {
            //如果匹配不到小数,就进行整数匹配
            p = Pattern.compile("(\\d+)");
            m = p.matcher(str);
            if (m.find()) {
                //如果有整数相匹配
                str = m.group(1) == null ? "" : m.group(1);
            } else {
                //如果没有小数和整数相匹配,即字符串中没有整数和小数,就设为空
                str = "";
            }
        }
        return str;
    }
    /** 校验字符串是否整数 */
    public static boolean checkStrIsInt(String str){
        if(StringUtils.isEmpty(str)){
            return false;
        }
        try{
            Integer.parseInt(str);
            return true;
        }catch (Exception e){
            return false;
        }
    }
    /**
     * 字符串转整形
     * @param str
     * @param defInt    默认整数
     * @return
     */
    public static int strChangeInt(String str, Integer defInt){
        if(defInt == null){
            defInt = 0;
        }
        if(StringUtils.isEmpty(str)){
            return defInt;
        }
        try{
            return Integer.parseInt(str);
        }catch (Exception e){
            return defInt;
        }
    }
}