[英]Limit Decimal Places in EditText
我正在使用 EditText 字段,用戶可以在其中指定金額。
我將 inputType 設置為 numberDecimal 可以正常工作,除了這允許輸入諸如 123.122 之類的數字,這對於金錢來說並不完美。
我寫了一些自定義的 InputFilter 方法,它的工作原理是這樣的。用戶可以在 dot-2 之前和 dot-2 之后使用 5 個元素,但不能正常工作我的目標是:
1) 使用時應輸入最大9999.99
2)如果用戶從0開始,第二個元素也是0,它必須替換為。(例如0.0)和點后的兩個元素之后(如0.01)這是我的代碼
public class DecimalDigitsInputFilter implements InputFilter {
Pattern mPattern;
public DecimalDigitsInputFilter(int digitsBeforeZero,int digitsAfterZero) {
mPattern=Pattern.compile("[0-9]*" + (digitsBeforeZero-1) + "}+((\\.[0-9]*" + (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;
}
}
我這樣調用這個方法
amountValue.setFilters(new InputFilter[] {new DecimalDigitsInputFilter(5,2)});
我如何重寫我的代碼來解決我的問題? 謝謝
您構建的正則表達式都是錯誤的。
正則表達式的第一部分是這個表達式:
"[0-9]*" + (digitsBeforeZero-1) + "}+"
說digitsBeforeZero = 5
,這會讓你:
[0-9]*4}+
這不是正確的正則表達式。 正則表達式應該是:
[0-9]{1,5}
表示 1 到 5 位數字。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.