Android Studio中如何统计TextView控件内的文本单词数量
Android实现TextView单词统计功能
前置准备
确保你已经在布局文件中正确声明两个TextView,id分别为ViewText和WordCount,并在业务代码中完成控件绑定。
步骤1:编写单词统计工具方法
该方法通过正则匹配分隔文本,过滤空串后返回有效单词数量,可根据业务需求调整正则规则适配不同的统计标准。
Kotlin 版本
private fun countWords(text: String): Int { // 按空白符、标点符号分割文本,可修改正则自定义统计规则 return text.split("\\s+|\\p{Punct}".toRegex()) .filter { it.isNotBlank() } .size }
Java 版本
private int countWords(String text) { String[] words = text.split("\\s+|\\p{Punct}"); int count = 0; for (String word : words) { if (!word.trim().isEmpty()) count++; } return count; }
步骤2:绑定文本变化监听实现实时统计
如果需要在ViewText文本内容更新时自动刷新单词数,添加TextWatcher监听即可;如果仅需统计固定文本的单词数,直接调用统计方法赋值一次即可。
Kotlin 版本
// 初始化时先统计一次默认文本的单词数 wordCount.text = "单词数:${countWords(viewText.text.toString())}" // 添加实时监听 viewText.addTextChangedListener(object : TextWatcher { override fun beforeTextChanged(s: CharSequence?, start: Int, count: Int, after: Int) = Unit override fun onTextChanged(s: CharSequence?, start: Int, before: Int, count: Int) { s?.let { wordCount.text = "单词数:${countWords(it.toString())}" } } override fun afterTextChanged(s: Editable?) = Unit })
Java 版本
// 初始化统计默认文本单词数 wordCount.setText("单词数:" + countWords(viewText.getText().toString())); // 添加实时监听 viewText.addTextChangedListener(new TextWatcher() { @Override public void beforeTextChanged(CharSequence s, int start, int count, int after) {} @Override public void onTextChanged(CharSequence s, int start, int before, int count) { if (s != null) { wordCount.setText("单词数:" + countWords(s.toString())); } } @Override public void afterTextChanged(Editable s) {} });
注意事项
- 如果使用ViewBinding/DataBinding绑定控件,直接使用绑定对象引用两个控件即可,无需调用
findViewById - 若需要调整统计规则,比如将连字符连接的词汇算为单个单词、排除纯数字内容等,直接修改
countWords方法中的正则表达式即可 - 若
ViewText展示的是固定不变的文本,可直接省略TextWatcher的添加逻辑,仅在初始化时调用一次统计方法赋值即可
内容的提问来源于stack exchange,提问作者Adev
相关产品推荐
相关产品推荐

