Java 如何限制textview接受某些或所有特殊字符?
我想知道是否有一种方法可以限制用户输入特殊字符,用户只能输入a-z和0-9个字符,并防止在Android中注入任何SQL?这里的最佳实践是什么Java 如何限制textview接受某些或所有特殊字符?,java,android,sqlite,sql-injection,Java,Android,Sqlite,Sql Injection,我想知道是否有一种方法可以限制用户输入特殊字符,用户只能输入a-z和0-9个字符,并防止在Android中注入任何SQL?这里的最佳实践是什么 谢谢。对于编辑文本,您可以添加侦听器 在onTextChanged()或posterextchanged()中,您可以获取文本并删除不需要的字符,为了简单起见,您可以使用rejex。您可以使用输入过滤器来验证用户在编辑文本中输入的内容 当缓冲区要替换范围时调用此方法 dstart…dest的dend与范围开始…结束的新文本 来源。返回要放置的字符序列 相
谢谢。对于编辑文本,您可以添加侦听器 在
onTextChanged()
或posterextchanged()
中,您可以获取文本并删除不需要的字符,为了简单起见,您可以使用rejex。您可以使用输入过滤器来验证用户在编辑文本中输入的内容
当缓冲区要替换范围时调用此方法
dstart…dest的dend与范围开始…结束的新文本
来源。返回要放置的字符序列
相反,如果合适,则包含空字符串,或者为空
接受原替换件
例如,像这样:
InputFilter filter = new InputFilter()
{
@Override
public CharSequence filter(CharSequence source, int start, int end, Spanned dest, int dstart, int dend)
{
if (source.toString().contains("'"))
return "";
else
return null; // Accept original replacement.
}
};
editText.setFilters(new InputFilter[] { filter });
然而,这将是避免SQL注入的一种非常糟糕的方法。最好改为在数据层中使用。您可以使用带有以下xml选项的EditText
:
<EditText
android:inputType="text"
android:digits="0123456789qwertzuiopasdfghjklyxcvbnm"
android:hint="Only letters, digits allowed"/>
尽管请记住,如果您正确使用了SQLitedatabase
的查询方法,它会自动执行所有SQL注入操作。您有3个答案,请选择对您帮助最大的一个。
<EditText
android:inputType="text"
android:digits="0123456789qwertzuiopasdfghjklyxcvbnm"
android:hint="Only letters, digits allowed"/>