【发布时间】:2015-06-25 05:22:00
【问题描述】:
我想检测我的EditText 是否包含笑脸(表情符号)。但我不知道如何检测它们。
【问题讨论】:
-
通过比喻,我的意思是表情符号。
-
您是否尝试过在edittext中输入表情符号并使用EditText.getText()查看其中包含的文本
标签: android android-edittext detect emoticons
我想检测我的EditText 是否包含笑脸(表情符号)。但我不知道如何检测它们。
【问题讨论】:
标签: android android-edittext detect emoticons
要在键盘上键入时禁用表情符号字符,我使用以下过滤器:
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++) {
int type = Character.getType(source.charAt(i));
//System.out.println("Type : " + type);
if (type == Character.SURROGATE || type == Character.OTHER_SYMBOL) {
return "";
}
}
return null;
}
};
mMessageEditText.setFilters(new InputFilter[]{filter});
如果您只需要检测 EditText 是否包含任何表情符号字符,您可以在 android.text.TextWatcher 接口实现(在 onTextChange() 或 afterTextChanged() 方法中)或例如使用此原理(Character.getType())或在 mMessageEditText.getText() 上使用简单的 for 循环(返回 CharSequence 类)和 charAt() 方法。
【讨论】:
如果simile指的是修辞格,你可以使用.getText()和String方法.contains(String)来检查它是否包含字符串“like”或“as”。
片段:
EditText myEditText = (EditText)findViewById(R.id.myEditText);
String input = myEditText.getText();
if(input.contains("like") || input.contains("as"))
{
//code
}
【讨论】:
这取决于您在编辑文本中实现 simley 的方式。如果您正在使用运动,您可以使用技巧来做到这一点。您可以设置一个条件,只要添加一个简单的,您就可以向 arrayList 添加某种类型的关键字,并且每当笑脸是移除器时,您可以从 arrayList 中删除该关键字。最后,您可以通过处理 arrayList 项目来检查该列表是否添加了该 simley。
例如...
if(Smiley_added){
arraylist.add(smiley_code,i);
}
if(simley_removed){
arraylist.remove(smileycode,i);
}
if(arraylist.get(i).equals("smileyCode")){
do this....
}
【讨论】: