目前我使用的过滤器(用于格式化货币),但是,用户仍然能够进入前导零:防止前导零,除非后面跟着一个点?
00000334.43 // Is accepted but shouldn't be..
03000334.43 // I don't want a leading zero unless followed by a .
我想只接受一家领先的零,如果它是一个.
前的零。
据我了解,有一个空白editText
,这将是不可能的,所以我想删除的零,除非在.
用户类型之后,在使用的情况下,例如:
User types 0 // 0 - Ok
User types . // 0. - This is fine
0 // 0 - Ok
4 // 04 - Not ok, 0 should be removed from the text edit.
我它扩展了DigitsKeyListener
类的自定义类中这样做 - 使用后者的filter()
方法:
public CharSequence filter(CharSequence source, int start, int end, Spanned dest,
int dstart, int dend)
{
// How can I achieve this inside the filter method?
}
我试过到目前为止:
replaceFirst()
- 我试图使用这个正则表达式 - .replaceFirst("^0+(?!$)", "")
但是它在尝试在打字后在开始处插入数字时会导致问题。我也不确定如何在滤镜方法中正确使用它。
任何帮助表示赞赏。
你正在按键进行这种分析?如果到目前为止只输入了零,你不能只是推迟这个处理,直到输入一个非零或十进制数? – aliteralmind
@aliteralmind确实,因为我需要检查旁边的数字是否是小数点,我想不出更好的方法?这是因为我的过滤的其余部分也是在逐个键的基础上完成的 – user2381114