您的位置:首页 > 其它

关于EditText的输入数字校验的问题

2016-05-10 16:29 274 查看
一.简述需求

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) {

}
});
}
}


以上基本是两种效果,如有问题欢迎指教
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息