我试过读这个帖子: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+")
。像这样
这就是为什么我在我的代码中使用first()
,即使它也不起作用。
用空格替换所有\ n并拆分(“”);得到分裂字符串的数量
在java中:
int count = multilineEditText.getText().toString().replace("\n", " ").split(" ").length;
这是一个很酷的RegEx来做你想要的(\ s | \ n)+
someString.split("(\\s|\\n)+")
这是一个很棒的应用程序来测试RegEx:https://regexr.com/
你唯一的问题是你使用的是Kotlin's split方法,它返回一个String列表,而Java's split方法返回一个字符串数组。您应该访问size属性,因为此处返回split方法是List。
val words = s.toString().trim()
numberOfInputWords = words.split("\\s+").first().size
wordsCounterTextView.text = "$numberOfInputWords"