как посчитать количество слов в Android Kotlin? - PullRequest
1 голос
/ 30 марта 2019

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

но у меня это не работает.

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


I

утра

очень очень

счастливый

прямо сейчас


поэтому я хочу посчитать количество слов и затем получить целое число «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+"). как это

enter image description here

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

Ответы [ 3 ]

0 голосов
/ 30 марта 2019

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

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

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

0 голосов
/ 30 марта 2019

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

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

Example for kotlin's split method

0 голосов
/ 30 марта 2019

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

в Java:

int count = multilineEditText.getText().toString().replace("\n", " ").split(" ").length;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...