创建类InputFilterMix以添加我要拒绝的特殊字符
public class InputFilterMix implements InputFilter {
@Override
public CharSequence filter(CharSequence charSequence, int i, int i1, Spanned spanned, int i2, int i3) {
if (isCharacter(charSequence.toString())) {
return "";
} else if (charSequence.toString().matches("\\d*")) {
return "";
}
return charSequence.toString();
}
private boolean isCharacter(String s) {
return s.matches("[^a-zA-Z0-9-' '-\u0621-\u064A]");
}
}
然后我将其添加到myActivity以在
上实现InputFilterMixpublic class myActivity extends AppCompatActivity {
private EditText name;
InputFilterMix inputFilterMix = new InputFilterMix();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_register);
name = (EditText) findViewById(R.id.phone_number);
name.setFilters(new InputFilter[]{inputFilterMix});
}
}
答案 0 :(得分:0)
您的匹配测试是对字符串要替换进行的,但是您想查看替换文本。
尝试此代码:
public class InputFilterMix implements InputFilter {
@Override
public CharSequence filter(CharSequence charSequence, int i, int i1, Spanned spanned, int i2, int i3) {
final CharSequence replacementText = charSequence.subSequence(i, i1);
final CharSequence replacedText = spanned.subSequence(i2, i3);
if (isCharacter(replacementText.toString())) {
return "";
} else if (replacementText.toString().matches("\\d*")) {
return "";
}
return replacedText.toString();
}
private boolean isCharacter(String s) {
return s.matches("[^a-zA-Z0-9-' '-\u0621-\u064A]");
}
}