EditText限制输入那些事儿

金额限制输入

需求: 测试丢过来一个需要优化的地方,说 输入金额的地方, 你能不能优化一下? 所有的金额要自动改成下面这样的格式:
0555 –> 555
00.5 –> 0.5
5.555 –> 5.55

我当时心里就有一句妈卖批想讲!!! 一个破 app 做这么多工作有毛用?
不过把使用客户当智障(尽量操作智能化)看的开发准则告诉我,这个需要做。
于是有了以下这段代码, 正则大法好:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
public class DecimalTextWatcher implements TextWatcher {
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
}
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
}
@Override
public void afterTextChanged(Editable s) {
if (s.length() > 1 && !Pattern.matches("^\\d+\\.{0,1}\\d{0,2}", s.toString())) {
s.delete(s.length() - 1, s.length());
}
if (s.length() > 1 && Pattern.matches("^0{1,}(\\d+)", s.toString())) {
s.delete(0, 1);
}
if (s.length() > 1 && Pattern.matches("^0{2,}\\.\\d", s.toString())) {
s.delete(0, 1);
}
}
}
etSecoundSum.addTextChangedListener(new DecimalTextWatcher());