как посчитать количество слов в Android Kotlin?

1

Я пытался прочитать эту тему: Android - Java - подсчет слов

но это не работает для меня.

так скажем, у меня есть эти слова в многострочном редактировании текста Android:


я

я

очень-очень

счастливый

прямо сейчас


поэтому я хочу посчитать количество слов и затем получить целое число "7" из этого многострочного текста редактирования. как это сделать?

Я пробовал это, но это не работает:

multilineEditText.addTextChangedListener(object: TextWatcher {

            override fun afterTextChanged(s: Editable?) {

            }

            override fun beforeTextChanged(s: CharSequence?, start: Int, count: Int, after: Int) {

            }

            override fun onTextChanged(s: CharSequence?, start: Int, before: Int, count: Int) {

                val words = s.toString().trim()
                numberOfInputWords = words.split("\\s+").first().length
                wordsCounterTextView.text = "$numberOfInputWords"


            }

        })

но этот код не работает для меня, потому что он не показывает правильный номер.

из ветки Android - java - считать слова

сказано, что я могу использовать someString.split("\\s+").length

но я не могу получить доступ к .length после использования .split("\\s+"). как это

Изображение 174551

вот почему я использую first() в своем коде, хотя он тоже не работает.

Теги:
kotlin
android-edittext

3 ответа

0

Единственная проблема, с которой вы столкнулись - это использование метода разбиения Kotlin, который возвращает список строк, тогда как метод разделения Java возвращает массив строк. Вы должны получить доступ к свойству size, поскольку возвращаемым методом split здесь является List.

  val words = s.toString().trim()
  numberOfInputWords = words.split("\\s+").first().size
  wordsCounterTextView.text = "$numberOfInputWords"

Изображение 174551

0

Вот классный RegEx, чтобы делать то, что вы хотите (\ s |\n) +

someString.split("(\\s|\\n)+")

Вот отличное приложение для тестирования RegEx: https://regexr.com/

0

заменить все \n пробелом и разделить (""); получить количество разделенных строк

в яве:

int count = multilineEditText.getText().toString().replace("\n", " ").split(" ").length;

Ещё вопросы

Сообщество Overcoder
Наверх
Меню