当前位置:操作系统 > 安卓/Android >>

Android EditText使用正则表达式进行输入过滤

近期在一个项目中用到修改密码这个功能,不过对于密码的输入,我们不希望用户输入汉字或者特殊字符,所以我们需要对用户进行输入的输入框进行过滤,下面是一个对EditText进行过滤的小代码片段:

 

1.首先给Edittext 添加一个TextWatcher,当然这个TextWatcher我们是要自己写的,核心功能也在这个类中

 

[java]
mOldPwdET.addTextChangedListener(new SearchWather(mOldPwdET )); 

 

2.下面就是这个自定义的TextWatcher

 

[java]
class SearchWather implements TextWatcher{ 
 
 
    //监听改变的文本框   
    private EditText editText;   
 
    /** 
     * 构造函数 
     */   
    public SearchWather(EditText editText){   
        this.editText = editText;   
    }   
 
    @Override   
    public void onTextChanged(CharSequence ss, int start, int before, int count) {   
        String editable = editText.getText().toString();   
        String str = stringFilter(editable.toString()); 
        if(!editable.equals(str)){ 
            editText.setText(str); 
            //设置新的光标所在位置 www.zzzyk.com    
            editText.setSelection(str.length()); 
        } 
    }   
 
    @Override   
    public void afterTextChanged(Editable s) {   
 
    }   
    @Override   
    public void beforeTextChanged(CharSequence s, int start, int count,int after) {   
 
    }   
 
}   
 
 
public static String stringFilter(String str)throws PatternSyntaxException{      
    // 只允许字母和数字        
    String   regEx  =  "[^a-zA-Z0-9]";                      
    Pattern   p   =   Pattern.compile(regEx);      
    Matcher   m   =   p.matcher(str);      
    return   m.replaceAll("").trim();      
}   

 

希望大家有什么更好的办法,可以分享一下,请大家多多指教。

 


作者 jamin0107

补充:移动开发 , Android ,
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,