HarmonyOS 鸿蒙Next怎么通过TextInput的inputFilter方法屏蔽emoji

发布于 1周前 作者 sinazl 来自 鸿蒙OS

HarmonyOS 鸿蒙Next怎么通过TextInput的inputFilter方法屏蔽emoji 怎么通过TextInput的inputFilter方法屏蔽输入的emoji表情

2 回复

inputFilter中可以通过正则表达式屏蔽emoji,可以参考:

[^\u4e00-\u9fa5a-zA-Z\d,\,.,。!!*%¥$??]+

其中\u4e00-\u9fa5匹配汉字,a-zA-Z匹配字母,\d匹配数字,,.,。匹配逗号和句号,^表示非,+表示尽可能多的匹配。

\uD83C[\uDF00-\uDFFF]|\uD83D[\uDC00-\uDE4F]|\uD83D[\uDE80-\uDEFF]|[\u2700-\u27BF]\uFE0F

这个是屏蔽emoji,其中的代码表示emoji的范围。

更多关于HarmonyOS 鸿蒙Next怎么通过TextInput的inputFilter方法屏蔽emoji的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


在HarmonyOS鸿蒙系统中,通过TextInput组件的inputFilter方法屏蔽emoji表情符号,你可以自定义一个输入过滤器来实现。以下是一个简洁的示例代码,展示如何实现该功能:

import ohos.aafwk.ability.AbilitySlice;
import ohos.agp.components.TextInput;
import ohos.agp.components.TextFilter;
import ohos.multimodalinput.event.TouchEvent;

public class MyAbilitySlice extends AbilitySlice {
    @Override
    protected void onStart(Intent intent) {
        super.onStart(intent);
        super.setUIContent(ResourceTable.Layout_ability_main);

        TextInput textInput = (TextInput) findComponentById(ResourceTable.Id_text_input);
        textInput.setInputFilter(new TextFilter() {
            @Override
            public CharSequence filter(CharSequence source, int start, int end, Spanned dest, int dstart, int dend) {
                // 检查输入内容是否包含emoji
                for (int i = start; i < end; i++) {
                    char c = source.charAt(i);
                    if (Character.toString(c).matches("[\\uD83C\\uDC00-\\uD83C\\uDFFF]|[\\uD83D\\uDC00-\\uD83D\\uDFFF]|[\\u2600-\\u27FF]|\\u200D|\\u200E")) {
                        // 如果包含emoji,则返回空字符串,即屏蔽输入
                        return "";
                    }
                }
                // 如果不包含emoji,则返回原输入内容
                return null;
            }
        });
    }
}

这段代码通过实现TextFilter接口的filter方法,检查输入内容是否包含emoji表情符号。如果包含,则返回一个空字符串以屏蔽该输入;如果不包含,则返回null以允许该输入。

如果问题依旧没法解决请联系官网客服,官网地址是 https://www.itying.com/category-93-b0.html

回到顶部