edittext设置小数位数,以及最大值

public class PointLengthFilter implements InputFilter {
    Pattern mPattern;

    public PointLengthFilter(int digitsBeforeZero, int digitsAfterZero) {
        String regex = String.format("[0-9]{0,%d}+(\\.[0-9]{0,%d})?", digitsBeforeZero, digitsAfterZero);
        mPattern = Pattern.compile(regex);
    }

    @Override
    public CharSequence filter(CharSequence source, int start, int end, Spanned dest, int dstart, int dend) {
        //直接输入"."返回"0."
        //".x"删除"x"输出为".",inputFilter无法处理成"0.",所以只处理直接输入"."的case
        if (".".equals(source.toString()) && "".equals(dest.toString())) {
            return "0.";
        }

        StringBuilder builder = new StringBuilder(dest);
        if ("".equals(source)) {
            builder.replace(dstart, dend, "");
        } else {
            builder.insert(dstart, source);
        }
        String resultTemp = builder.toString();

        try{
            double result = Double.parseDouble(resultTemp);
            if(result>30){
                return "";
            }
        }catch (Exception e){

        }
        //判断修改后的数字是否满足小数格式,不满足则返回 "",不允许修改
        Matcher matcher = mPattern.matcher(resultTemp);
        if (!matcher.matches()) {
            return "";
        }
        return null;
    }

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值