我想限制只包含chinease字符,字母(a~z,A~Z)和数字(0~9)的EditText输入内容,它不能输入任何空格char或表情符号字符或符号
我尝试将一个InputFilter添加到EditText,但我不是真的表情符号unicode,结果是一些chinease字符也会被过滤。
还有其他解决方案吗?
我的EmojiFilter:
public class EmojiFilter implements InputFilter {
@Override
public CharSequence filter(CharSequence source, int start, int end, Spanned dest, int dstart,
int dend) {
if (filterSet.contains(source.toString())) {
return "";
}
return source;
}
private static Set<String> filterSet = null;
private static void addUnicodeRangeToSet(Set<String> set, int start, int end) {
if (set == null) {
return;
}
if (start > end) {
return;
}
for (int i = start; i <= end; i++) {
filterSet.add(new String(new int[] {
i
}, 0, 1));
}
}
static {
filterSet = new HashSet<String>();
// See http://apps.timwhitlock.info/emoji/tables/unicode
// 1F601 - 1F64F
addUnicodeRangeToSet(filterSet, 0x1F601, 0X1F64F);
// 2702 - 27B0
addUnicodeRangeToSet(filterSet, 0x2702, 0X27B0);
// 1F680 - 1F6C0
addUnicodeRangeToSet(filterSet, 0X1F680, 0X1F6C0);
// 24C2 - 1F251
addUnicodeRangeToSet(filterSet, 0X24C2, 0X1F251);
// 1F600 - 1F636
addUnicodeRangeToSet(filterSet, 0X1F600, 0X1F636);
// 1F681 - 1F6C5
addUnicodeRangeToSet(filterSet, 0X1F681, 0X1F6C5);
// 1F30D - 1F567
addUnicodeRangeToSet(filterSet, 0X1F30D, 0X1F567);
}
public EmojiFilter() {
super();
}
}