如何计算Kotlin Android中的单词数量?

问题描述 投票:1回答:3

我试过读这个帖子:Android - java - count words

但它对我不起作用。

所以说我在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 - count words

据说我可以使用someString.split("\\s+").length

但在使用.length后我无法访问.split("\\s+")。像这样

enter image description here

这就是为什么我在我的代码中使用first(),即使它也不起作用。

android kotlin android-edittext
3个回答
0
投票

用空格替换所有\ n并拆分(“”);得到分裂字符串的数量

在java中:

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

0
投票

这是一个很酷的RegEx来做你想要的(\ s | \ n)+

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

这是一个很棒的应用程序来测试RegEx:https://regexr.com/


0
投票

你唯一的问题是你使用的是Kotlin's split方法,它返回一个String列表,而Java's split方法返回一个字符串数组。您应该访问size属性,因为此处返回split方法是List。

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

Example for kotlin's split method

© www.soinside.com 2019 - 2024. All rights reserved.