我想从字符串中获取字数。就这么简单。问题是字符串可能是一种不可预测的语言。
因此,我需要一个签名函数 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/