java - 从 Unicode 字符串中获取字数(任何语言)

标签 java string unicode multilingual word-count

我想从字符串中获取字数。就这么简单。问题是字符串可能是一种不可预测的语言。

因此,我需要一个签名函数 int getWordCount(String) 以及以下示例输出 -

getWordCount("供应商代发发货") => 7
getWordCount("This is a sentence") => 4

任何有关如何进行的帮助将不胜感激:)

最佳答案

标准 API 提供了 BreakIterator对于这种边界分析,但 Oracle Java 7 语言环境支持不会破坏示例字符串。

当我使用 ICU4J v51.1 BreakIterator它将样本分解为[供应, 商品, 发, 发, 货]

// import com.ibm.icu.text.BreakIterator;
String sentence = "\u4f9b\u5e94\u5546\u4ee3\u53d1\u53d1\u8d27";
BreakIterator iterator = BreakIterator.getWordInstance(Locale.CHINESE);
iterator.setText(sentence);

List<String> words = new ArrayList<>();
int start = iterator.first();
int end = iterator.next();
while (end != BreakIterator.DONE) {
  words.add(sentence.substring(start, end));
  start = end;
  end = iterator.next();
}
System.out.println(words);

注意:我用谷歌翻译猜测“供应商代发货”是中文。显然,我不会说这种语言,所以无法评论输出的正确性。

关于java - 从 Unicode 字符串中获取字数(任何语言),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16637506/

相关文章:

java - 安卓摇一摇代码

unicode - 什么是转义字符\u000a

java - 为什么枚举实现不能访问枚举类中的私有(private)字段

java - 我该如何解决这个错误 java.lang.Object[] cannot be cast to java.lang.String[]?

java - Web 服务 - 在 Java 中为 RESTful Web 服务配置 JSON

Delphi - 绘制一个 Unicode 字符?

python - 从未知字符编码的字符串中转储 JSON

Mysql比较字符串

c++ - 运算符是什么!!在字符串上做 C++

javascript - 连接两个字符串时 += 的作用是什么? ( Eloquent JS FizzBu​​zz)