Я пытался прочитать эту тему: 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+")
. как это
вот почему я использую first()
в своем коде, хотя он тоже не работает.
Единственная проблема, с которой вы столкнулись - это использование метода разбиения Kotlin, который возвращает список строк, тогда как метод разделения Java возвращает массив строк. Вы должны получить доступ к свойству size, поскольку возвращаемым методом split здесь является List.
val words = s.toString().trim()
numberOfInputWords = words.split("\\s+").first().size
wordsCounterTextView.text = "$numberOfInputWords"
Вот классный RegEx, чтобы делать то, что вы хотите (\ s |\n) +
someString.split("(\\s|\\n)+")
Вот отличное приложение для тестирования RegEx: https://regexr.com/
заменить все \n пробелом и разделить (""); получить количество разделенных строк
в яве:
int count = multilineEditText.getText().toString().replace("\n", " ").split(" ").length;