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()方法中调用