android - 如何在 Java/Kotlin 中检查字符串是否包含非 KSC5601 字母?
问题描述
解决方案
public class MainActivity extends Activity {
private EditText editText;
private String CharacterSet = "~#^|$%&*!FGHIJKLMOPTWXYZ";
private InputFilter filter = new InputFilter() {
@Override
public CharSequence filter(CharSequence source, int start, int end, Spanned dest, int dstart, int dend) {
if (source != null && !CharacterSet.contains(("" + source))) {
return "";
}
return null;
}
};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
editText = (EditText) findViewById(R.id.editText);
editText.setFilters(new InputFilter[] { filter });
}
}
在这里,我们定义了一个有效的字符集,并且只允许它作为输入
<EditText
android:id="@+id/nameText"
android:layout_width="177dp"
android:layout_height="wrap_content"
android:inputType="text"
android:digits="abcdefghijklmnopqrstuvwxyz ABCDEFGHIJKLMNOPQRSTUVWXYZ" />
同样的事情也可以在布局中完成
如果你以这种方式实现 InputFilter
InputFilter typeFilter = new InputFilter() {
@Override
public CharSequence filter(CharSequence source, int start, int end, Spanned dest, int dstart, int dend) {
Pattern p = Pattern.compile("[a-zA-Z|\u4e00-\u9fa5]+");
Matcher m = p.matcher(source.toString());
if (!m.matches()) return "";
return null;
}
};
其中\u4e00-\u9fa5 这是中文字母的 unicode 范围,如果您找到韩语的 unicode 范围,可以这样做
推荐阅读
- windows - Docker for windows nfs 客户端/服务器
- java - 从文本文件中读取和拆分数据
- c++ - 尝试在eclipse中开发gstreamer项目
- git - 如何在 azure devops/visual studio/git 中恢复合并的分支
- python - 蟒蛇+熊猫;如何正确合并数据框列表的字典并作为单个表保存到 xlsx 或 csv
- reactjs - 如何通过上下文 Api 反应传递状态?
- android - OnClick 事件在 NavigationView 中不起作用
- web - 服务器上的实际网页是否应受版本控制
- c - 精灵读符号
- php - 在 Woocommerce 档案中按自定义元键对产品进行排序