我想讓一個EditText取小數點後兩位數字的位數(可選)。值可以是:十進制輸入過濾器android
XXXX
xxxx.x
XX.XX
.XX
.X
XX
我試過這麼多S/O中找到的解決方案,我找到了合適的正則表達式來滿足我的解決方案。但沒有一個符合我的要求。一些解決方案符合要求,但不允許在小數點之前進行編輯。假設edittext值是.xx,那麼在小數點(。)之前不能編輯。
任何人都可以指出適當的解決方案。
N.B .:使用EditText中的maxLength屬性。
我想讓一個EditText取小數點後兩位數字的位數(可選)。值可以是:十進制輸入過濾器android
XXXX
xxxx.x
XX.XX
.XX
.X
XX
我試過這麼多S/O中找到的解決方案,我找到了合適的正則表達式來滿足我的解決方案。但沒有一個符合我的要求。一些解決方案符合要求,但不允許在小數點之前進行編輯。假設edittext值是.xx,那麼在小數點(。)之前不能編輯。
任何人都可以指出適當的解決方案。
N.B .:使用EditText中的maxLength屬性。
試試這個,
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(10, 2) });
我也用過這個。這符合我的要求,但不允許在小數點之前進行修改(。) –
究竟您想要什麼? –
使用您的解決方案,在Edittext中放入.33值,並嘗試在小數點(。)之前添加一些內容。我相信這不會發生。 –
什麼是應該的正則表達式呢?匹配所有小數? –
你需要什麼作爲o/p? –
你能找到解決方案嗎?我有同樣的問題。我不能在小數點前添加新的字符... – atasoyh