2

リストビューに編集テキストがあります。小数点以下2桁以上入力するユーザーを制限したい。n 個の数字を許可するようになりました。ユーザーがパターンを使用せずに小数点の後に2つ以上の数字を入力しなかったことを制限するにはどうすればよいですか?

4

3 に答える 3

3

次のように正規表現 ( regex ) を使用できます。

public class DecimalDigitsInputFilter implements InputFilter {

    Pattern mPattern;

    public DecimalDigitsInputFilter(int digitsBeforeZero,int digitsAfterZero) {
        mPattern=Pattern.compile("[0-9]{0," + (digitsBeforeZero-1) + "}+((\\.[0-9]{0," + (digitsAfterZero-1) + "})?)||(\\.)?");
    }

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

            Matcher matcher=mPattern.matcher(dest);       
            if(!matcher.matches())
                return "";
            return null;
        }

    }

それを使用するには、次のようにします。

editText.setFilters(new InputFilter[] {new DecimalDigitsInputFilter(5,2)});
于 2012-10-16T07:58:57.153 に答える
1

TextWatcherを使用し、afterTextChangedメソッドで正規表現を使用して必要なテキストを照合し、入力された余分な数字を削除できます。

于 2012-10-16T07:58:53.737 に答える