java如何限制EditText输入只允许3位数字(整数或小数)
正如标题所说,我在活动中设置了一个EditText,希望将输入限制为仅数字。然而,它是十进制数还是整数并不重要。我确实要求数字限制为3。例如,“123”、“1.23”、“12.3”的输入都是合法输入
“1234”,“123.”。123'都是非法输入
我试着建立
安卓:inputType = "numberDecimal"
在xml文件中
并将最大长度设置为4
编辑:
我还尝试了以下代码:
InputFilter filter = new InputFilter() {
//^\-?(\d{0,5}|\d{0,5}\.\d{0,3})$
//^\-?(\d{0,3}|\d{0,2}\.\d{0,1}|\d{0,1}\.\d{0,2})$
@Override
public CharSequence filter(CharSequence source, int start, int end, Spanned dest, int dstart, int dend) {
if (end > start) {
// adding: filter
// build the resulting text
String destinationString = dest.toString();
String resultingTxt = destinationString.substring(0, dstart) + source.subSequence(start, end) + destinationString.substring(dend);
// return null to accept the input or empty to reject it
return resultingTxt.matches("^\\-?(\\d{0,3}|\\d{0,2}\\.\\d{0,1}|\\d{0,1}\\.\\d{0,2})$") ? null : "";
}
return null;
}
};
我确实根据@Suman Dash提到的示例代码修改了正则表达式。 我对正则表达式的理解
^\-?(\d{0,3}|\d{0,2}\.\d{0,1}|\d{0,1}\.\d{0,2})$
允许特定的数字输入模式,如#.###,##.#和###。 当我测试代码时,模式#.#和###工作正常,但模式####也允许像“##”这样的输入,例如“.88”作为合法输入。它把小数点当作一个合法的数字,所以我只能输入“.88”,而不是“.123”。不管怎样,我不想要任何以小数点开始的数字。 我怎样才能消除这种情况? 实现这一目标的最佳方式是什么?谢谢
# 1 楼答案
此代码可能对您有所帮助