Get Emoji Count In String

前端 未结 5 1788
暗喜
暗喜 2021-01-15 17:01

I would like to find how many emojis the user has input into an EditText. If the user only enters emojis, and uses 3 or less, I want to be able to display that

5条回答
  •  情书的邮戳
    2021-01-15 17:19

    try this

    private TextWatcher textWatcher = new TextWatcher() {
        @Override
        public void beforeTextChanged(final CharSequence s, final int start, final int count, final int after) {
            editText.post(new Runnable() {
                @Override
                public void run() {
                    if (length < 100) {
                        if (count > 0 && after <= 0)/*remove emoij*/ {
                            Log.i("MainActivity", "emoij -> down length");
                            length--;
                        } else if (count > after)/*remove text*/ {
                            Log.i("MainActivity", "text -> down length");
                            length--;
                        } else if (count == 0 && after > 1)/*emoij*/ {
                            Log.i("MainActivity", "emoij -> increase");
                            ++length;
                        } else if (count == 0 && after == 1)/*Text*/ {
                            Log.i("MainActivity", "text -> increase");
                            ++length;
                        } else if (count > 0 && after > 1) {
                            Log.i("MainActivity", "text -> increase");
                            ++length;
                        }
                        if (s.length() <= 0)
                            length = 0;
                        Log.w("MainActivity", " Length: " + length);
                    } else {
                        if (count > 0 && after <= 0)/*remove emoij*/ {
                            Log.i("MainActivity", "emoij -> down length");
                            length--;
                        } else if (count > after)/*remove text*/ {
                            Log.i("MainActivity", "text -> down length");
                            length--;
                        }
                         Log.w("MainActivity", " Length: " + length);
                    }
    
                    if (length == 100) {
                        editText.setFilters(new InputFilter[]{new InputFilter.LengthFilter(s.length())});
                    } else {
                        editText.setFilters(new InputFilter[]{});
                    }
                }
            });
        }
    
        @Override
        public void onTextChanged(CharSequence s, int start, int before, int count) {
    
        }
    
        @Override
        public void afterTextChanged(Editable s) {
    
        }
    };
    

    `

提交回复
热议问题