Android:简单格式输入数字

Android:简单格式输入数字,android,Android,我在学安卓。我有一个edittext来输入钱,如果我输入1000,结果必须是1.000,如果我输入1000000,结果必须是1.000.000 当我打字时,从最后到开始的每3个字符必须有一个“.” 像这样 public class CurrencyFormatInputFilter implements InputFilter { Pattern mPattern = Pattern.compile("(0|[1-9]+[0-9]*)?(\\.[0-9]{0,2})?");

我在学安卓。我有一个edittext来输入钱,如果我输入1000,结果必须是1.000,如果我输入1000000,结果必须是1.000.000

当我打字时,从最后到开始的每3个字符必须有一个“.”

像这样

    public class CurrencyFormatInputFilter implements InputFilter {

    Pattern mPattern = Pattern.compile("(0|[1-9]+[0-9]*)?(\\.[0-9]{0,2})?");

    @Override
    public CharSequence filter(
            CharSequence source,
            int start,
            int end,
            Spanned dest,
            int dstart,
            int dend) {

        String result = 
                dest.subSequence(0, dstart)
                + source.toString() 
                + dest.subSequence(dend, dest.length());

        Matcher matcher = mPattern.matcher(result);

        if (!matcher.matches()) return dest.subSequence(dstart, dend);

        return null;
    }

}

您可以使用InputFilter

public class CurrencyFormat implements InputFilter {

    Pattern mPattern = Pattern.compile("(0|[1-9]+[0-9]*)?(\\.[0-9]{0,2})?");

    @Override
    public CharSequence filter(CharSequence source, int start, int end,
            Spanned dest, int dstart, int dend) {

        String result = 
                dest.subSequence(0, dstart)
                + source.toString() 
                + dest.subSequence(dend, dest.length());

        Matcher matcher = mPattern.matcher(result);

        if (!matcher.matches()) return dest.subSequence(dstart, dend);

        return null;
    }
}
您可以设置如下过滤器:

editText.setFilters(new InputFilter[] {new CurrencyFormat()});

如果您觉得这有用,请接受它。

非常感谢您,让我在我的项目中尝试一下!非常感谢。祝你过得愉快,米歇尔
editText.setFilters(new InputFilter[] {new CurrencyFormat()});