【问题标题】:How to detect emoticons in EditText in android如何在Android中检测EditText中的表情符号
【发布时间】:2015-06-25 05:22:00
【问题描述】:

我想检测我的EditText 是否包含笑脸(表情符号)。但我不知道如何检测它们。

【问题讨论】:

  • 通过比喻,我的意思是表情符号。
  • 您是否尝试过在edittext中输入表情符号并使用EditText.getText()查看其中包含的文本

标签: android android-edittext detect emoticons


【解决方案1】:

要在键盘上键入时禁用表情符号字符,我使用以下过滤器:

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() 方法。

【讨论】:

  • 这真的很有帮助。
  • 但是如果使用过滤器,还会存在另一个错误。先输入一些东西,然后输入表情符号,然后按退格,会删除2个字符而不是1个
  • 不错,但遗憾的是,这也排除了许多其他特殊字符,如 © ® ™ ℅、中文符号甚至触觉字母。
【解决方案2】:

如果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
}

【讨论】:

  • 通过比喻,我的意思是表情符号。
  • 我认为你的意思是表情符号。明喻是完全不同的东西
  • 对此我深感抱歉,但现在我更正了问题
【解决方案3】:

这取决于您在编辑文本中实现 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....
}

【讨论】:

  • 我想检测表情符号是否存在,然后在发送到服务器时我想删除它们,这样明喻图可以有多大,如果我检查,这个方法也将被硬编码通过构建表情符号与代码的地图来为每个表情符号。
猜你喜欢
  • 1970-01-01
  • 2021-01-15
  • 1970-01-01
  • 1970-01-01
  • 2018-06-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-08-21
相关资源
最近更新 更多