Android 限制特殊字符&;空间编程
我想限制用户以编程方式输入特殊字符和空格。 下面是我的代码Android 限制特殊字符&;空间编程,android,android-edittext,android-input-filter,Android,Android Edittext,Android Input Filter,我想限制用户以编程方式输入特殊字符和空格。 下面是我的代码 InputFilter[] alphaNumericFilter = new InputFilter[2]; alphaNumericFilter[0] = new InputFilter() { @Override public CharSequence filter(CharSequence source, int start, int end, Spanned des
InputFilter[] alphaNumericFilter = new InputFilter[2];
alphaNumericFilter[0] = new InputFilter() {
@Override
public CharSequence filter(CharSequence source, int start, int end, Spanned dest, int dstart, int dend) {
for (int k = start; k < end; k++) {
boolean isLetterOrDigit = Character.isLetterOrDigit(source.charAt(k));
boolean isSpaceChar = Character.isSpaceChar(source.charAt(k));
if ((source.length() > 0 && isSpaceChar) ||
(!isLetterOrDigit && !isSpaceChar) ||
(isSpaceChar && TextUtils.isEmpty(dest))) {
return "";
}
}
return null;
}
};
InputFilter[]alphaNumericFilter=新的InputFilter[2];
alphaNumericFilter[0]=新的InputFilter(){
@凌驾
公共CharSequence筛选器(CharSequence源、int开始、int结束、跨区目标、int开始、int结束){
for(int k=start;k0&&isSpaceChar)||
(!IsleterOrdigit&&!isSpaceChar)||
(isSpaceChar&&TextUtils.isEmpty(dest))){
返回“”;
}
}
返回null;
}
};
按空格键删除最后一个字符。您可以这样做:
public static InputFilter getAlphaNumericInputFilter(){
return new InputFilter() {
@Override
public CharSequence filter(CharSequence source, int start, int end,
Spanned dest, int dstart, int dend) {
if(source.equals("")){ // for backspace
return source;
}
if(source.toString().matches("[a-zA-Z0-9 ]+")){
return source;
}
return "";
}
};
}
在这里,如果您可以根据您的要求更改匹配字符串,例如,避免使用字母数字空格,那么它应该是这样的:[a-zA-Z0-9]+
希望它能帮助你 InputFilter alphaNumericFilter=新建InputFilter(){
InputFilter alphaNumericFilter = new InputFilter() {
@Override
public CharSequence filter(CharSequence arg0, int arg1, int arg2, Spanned arg3, int arg4, int arg5)
{
for (int k = arg1; k < arg2; k++) {
if (!Character.isLetterOrDigit(arg0.charAt(k))) {
return "";
}
}
return null;
}
};
mFirstName.setFilters(new InputFilter[]{ alphaNumericFilter});
@凌驾
公共字符序列筛选器(字符序列arg0、int arg1、int arg2、跨距arg3、int arg4、int arg5)
{
对于(int k=arg1;k
使用此代码过滤编辑文本
private String yourCharacterThatYouWantToBlock= " ~#^|$%&*!";
private InputFilter filter = new InputFilter() {
@Override
public CharSequence filter(CharSequence source, int start, int end, Spanned dest, int dstart, int dend) {
if (source != null && yourCharacterThatYouWantToBlock.contains(("" + source))) {
return "";
}
return null;
}
};
现在将此筛选器应用于您的编辑文本
最后,我通过在代码中添加以下行解决了这个问题
mEditText.setInputType(InputType.TYPE_TEXT_VARIATION_VISIBLE_PASSWORD);
这一行不会显示键盘上的建议。特殊字符如何?@MohsinSyd如果您看到代码匹配字符串,则该字符串是您希望支持的字符串。特殊字符已被避免,因为匹配字符串中没有特殊字符。它允许我输入space@MohsinSyd按我上面的代码使用。它将允许字母数字字符串的空格。@MohsinSyd我读了你的问题,如果我答对了,那么你想限制用户输入的所有特殊字符和空格,因此,我编辑了我的答案,请现在检查。您能澄清一下,您的编辑文本的可接受输入是什么吗?它只是(a-z a-z 0-9)还是其他
mEditText.setInputType(InputType.TYPE_TEXT_VARIATION_VISIBLE_PASSWORD);