EditText 實(shí)現(xiàn)微信每次刪除@的一個(gè)昵稱

EditText要實(shí)現(xiàn)每次刪除固定位置的@的昵稱,其實(shí)就是要在字符串中查找到每個(gè)昵稱的開始和結(jié)束位置。這邊用正則表達(dá)式匹配的每個(gè)昵稱的位置。具體代碼如下


        editText.setOnKeyListener(new View.OnKeyListener() {
            @Override
            public boolean onKey(View view, int keyCode, KeyEvent event) {
                EditText editText = (EditText) view;
                Editable editable = editText.getText();
                //獲取光標(biāo)所在位置
                int selectionStart = editText.getSelectionStart();
                String content = editable.toString().substring(0, selectionStart);
                Pattern pattern = Pattern.compile(".*@.+\\s");
                Matcher matcher = pattern.matcher(content);
                //查詢字符串中是否有以@開頭和空格結(jié)尾的格式
                if (matcher.find() && event.getAction() == KeyEvent.ACTION_DOWN) {
                    if (TextUtils.equals(matcher.group(), content) && keyCode == KeyEvent.KEYCODE_DEL) {
                        ArrayList<Integer> indexs = new ArrayList<>();
                        Pattern patternSub = Pattern.compile("@.+?\\s");
                        Matcher matcherSub = patternSub.matcher(content);
                        while (matcherSub.find()) {
                            indexs.add(matcherSub.start());
                        }
                        if (indexs.size() > 0) {
                            //刪除距離光標(biāo)最近的符合篩選邏輯的字符串
                            editable.delete(indexs.get(indexs.size() - 1),content.length());
                            return true;
                        }
                    }
                }
                return false;
            }
        });

    ~~~
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • ??引用類型的值(對(duì)象)是引用類型的一個(gè)實(shí)例。 ??在 ECMAscript 中,引用類型是一種數(shù)據(jù)結(jié)構(gòu),用于將數(shù)...
    霜天曉閱讀 1,227評(píng)論 0 1
  • 類 !/usr/bin/python -- coding: UTF-8 -- class Employee:'所有...
    SkTj閱讀 1,074評(píng)論 0 0
  • Python中的正則表達(dá)式(re) import rere.match #從開始位置開始匹配,如果開頭沒有則無re...
    BigJeffWang閱讀 7,618評(píng)論 0 99
  • 概要 64學(xué)時(shí) 3.5學(xué)分 章節(jié)安排 電子商務(wù)網(wǎng)站概況 HTML5+CSS3 JavaScript Node 電子...
    阿啊阿吖丁閱讀 9,880評(píng)論 0 3
  • 正則表達(dá)式到底是什么東西?字符是計(jì)算機(jī)軟件處理文字時(shí)最基本的單位,可能是字母,數(shù)字,標(biāo)點(diǎn)符號(hào),空格,換行符,漢字等...
    獅子挽歌閱讀 2,298評(píng)論 0 9

友情鏈接更多精彩內(nèi)容