EditText 限制字符类型,个数 (已封装)

package com.ubet****.ubet********.utils;

import java.util.regex.Matcher;
import java.util.regex.Pattern;
import java.util.regex.PatternSyntaxException;

import android.text.InputFilter;
import android.text.Spanned;

import com.ubet****.ubet********.widget.ClearEditText;

/**
* @deprecated 限制editText输入特殊字符 ,这里只允许输入只允许 字母、数字和汉字
* @category 限制EditText类型/字符数量Utils
* @author niuzilin
* @
*/
public class LimitEditText {
/*
* 实现使得EditText只接收字符(数字、字母和汉字)
*
* @初始化的控件之后调用
*/
public static void setMyFilter(ClearEditText et_search) {

    et_search.setFilters(new InputFilter[] { new InputFilter() {
        public CharSequence filter(CharSequence source, int start, int end,
                Spanned dest, int dstart, int dend) {
            for (int i = start; i < end; i++) {
                if (!Character.isLetterOrDigit(source.charAt(i))
                        && !Character.toString(source.charAt(i))
                                .equals("_")
                        && !Character.toString(source.charAt(i))
                                .equals("-")) {
                    return "";
                }
            }
            return null;

        }
    } });
}

/*
 * 此方法在 是在 实现TextWatcher 后的onTextChanged()方法里面调用
 * 
 * @ClearEditText 这是自己方法的里面的editText 这里自定义了在患者端
 */
public static void setCursor(ClearEditText et_search) {

    String editable = et_search.getText().toString();
    String s = sFilter(editable.toString());
    if (!editable.equals(s)) {
        et_search.setText(s);
        // 设置新的光标所在位置
        et_search.setSelection(s.length());
    }
}

/*
 * 利用正则表达式限制输入类型
 */
public static String sFilter(String s) throws PatternSyntaxException {

    String regH= "[^a-zA-Z0-9\u4E00-\u9FA5]";
    Pattern p = Pattern.compile(regH);
    Matcher m = p.matcher(s);
    return m.replaceAll("").trim();
}

/*
 * @限制输入的字数
 * 
 * @初始化时候调用就行
 */
public static void limitCounts(ClearEditText et_search, int counts) {

    int maxLength = counts;
    InputFilter[] array = new InputFilter[1];
    array[0] = new InputFilter.LengthFilter(maxLength);
    et_search.setFilters(array);
}

}
/
调用的三个方法是
LimitEditText.setMyFilter(et_search);//控件初始化后调用
LimitEditText.limitCounts(et_search, 12);//控件初始化后调用
LimitEditText.setCursor(et_search);//在OnTextChanged()方法中调用

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值