标签:
一.简述需求
1.需求是输入数字是删除第一位数字后位是0的禁止删除(如支付宝)
2.需求是可以删除任何位置的数字。如果删除第一位后面是0,就去掉无效的0
二.具体的实际例子如:
1010需求1来做:删除第一位是禁止删除
1010需求2来做:删除第一位变成10
三.下面具体上代码
方式一
private void subEditTextString(final EditText et) { if (et != null) { et.addTextChangedListener(new TextWatcher() { String str2 = ""; public void onTextChanged(CharSequence s, int start, int before, int count) { } @Override public void beforeTextChanged(CharSequence s, int start, int count, int after) { str2 = et.getText().toString(); } @Override public void afterTextChanged(Editable s) { String sss = et.getText().toString(); if ("".equals(sss)) { // et.setText(""); return; } else { char c = sss.charAt(0); if ("0".equals(c + "")) { et.setText(str2); et.setSelection(str2.length() + 1); } } } }); } }方式二
private void subEditTextString(final EditText et) { if (et != null) { et.addTextChangedListener(new TextWatcher() { Arraylist<String> list; public void onTextChanged(CharSequence s, int start, int before, int count) { String str = et.getText().toString(); Pattern p = Pattern.compile("[1-9]\\d*"); Matcher m = p.matcher(str); list = new ArrayList<String>(); while (m.find()) { list.add(m.group(0)); } if (list.size()>0) { System.out.println(list.size() + list.get(0)); et.removeTextChangedListener(this); et.setText(list.get(0)); et.addTextChangedListener(this); }else{ et.removeTextChangedListener(this); et.setText(""); et.addTextChangedListener(this); } et_charge_money.setSelection(et.getText().toString().length()) } @Override public void beforeTextChanged(CharSequence s, int start, int count, int after) { } @Override public void afterTextChanged(Editable s) { } }); } }
标签:
原文地址:http://blog.csdn.net/shayubuhuifei/article/details/51364334