Android - 輸入字串排除 使用InputFilter

// 宣告輸入框
EditText et_name = (EditText) findViewById(R.id. et_name);

方法一:使用 isLetterOrDigit 方法排除大部分特殊符號

InputFilter filter = new InputFilter() {
@Override
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))) {
return "";
}
}
return null;
}
};
et_name.setFilters(new InputFilter[] { filter });


方法二:使用 Pattern 排除指定特殊符號

InputFilter filter = new InputFilter() {
@Override
public CharSequence filter(CharSequence source, int start, int end, Spanned dest, int dstart, int dend) {
String EXCLUDE_PATTERN = "[/。,、':∶;?‘’“”〝〞ˆˇ﹕︰﹔﹖﹑·¨….¸;!´?!~—ˉ|‖"〃`@﹫¡¿﹏﹋﹌︴々﹟#﹩$﹠&﹪%*﹡﹢﹦﹤‐ ̄¯―﹨ˆ˜﹍﹎+=<__-ˇ~﹉﹊()〈〉‹›﹛﹜『』〖〗[]《》〔〕{}「」【】︵︷︿︹︽_﹁﹃︻︶︸﹀︺︾ˉ﹂﹄︼❝❞!():,'\\[\\]{}^・.·.•#^*+=\<>&§⋯`-–/—|\"/\\\\]";

Pattern pattern = Pattern.compile(EXCLUDE_PATTERN);
Matcher matcher = pattern.matcher(source);
if (matcher.matches()){
return "";
}
return null;
}
};
et_name.setFilters(new InputFilter[] { filter });


PS:
在JAVA"為定義字串時會使用到,因此需跳脫,寫法為\"
而反斜線\需跳脫為/\\\\
[需跳脫為\\[
]需跳脫為\\]

需多瞭解正規表示式

參考:https://developer.android.com/reference/java/util/regex/Pattern.html



留言

這個網誌中的熱門文章

Android - OkHttp3連線 post應用