如何计算文档中的单词,得到的结果与MS OFFICE的结果相同?
答案 0 :(得分:0)
在不了解您的环境的情况下,我可以告诉您,您需要实现以下内容:
答案 1 :(得分:0)
基本单词拆分使用空格和标点符号(。,?!“' - 等 - 实际上是任何非字母数字或字符)字符来分割单词。
确保跳过标点符号/空格序列,而不是计算它们之间的额外“单词”。
您必须决定数字是否为“单词”。而且“123,456.78美元”是一个还是三个字。
您可能还想应用其他规则 - 例如,如果您要在源代码中查找单词,您可能希望将+ - = * /()& ^%$字符视为“空格”。如果你有camelCase或PascalCase样式的标识符,你可能想要找到你找到的“单词”,并检查它们是否在中间或单词中有大写字符。
从根本上说,这是一个简单的问题 - 你只需要决定一个“单词”是什么。你可以像你喜欢的那样简单或复杂。
将相同字数统计为Office的最佳方法是使用宏或自动化来使用MS Word加载文本并计算字数。
答案 2 :(得分:0)
理论上,你首先必须定义你所看到的单词(另见Jason Williams的帖子)。然后使用您计划用于此的任何语言打开文档。您将文档从Microsoft的专有格式转换为美观和干净的内容。
然后它只是计算上述单词定义的出现次数。
这里的难点是解析办公文档。幸运的是,Microsoft has relceased their proprietary format specification!
它有点啰嗦,但也许你可以找到为你做过艰苦工作的人,或者你可以尝试从头开始。
或者,如果您愿意透露您计划使用的语言和操作系统,那么事情可以轻松得多(例如,如果您在Windows上并安装了Office,则可以使用OLE插件。)
此外,请查看此blog post about that format of Office documents,其中包含一些有用的信息(由谷歌提供)
答案 3 :(得分:-1)
如果您将整个文档作为String,则此代码(在java中)可能适合您:
private int wordCount(String str){
String[] words = str.trim().split("\\s+");
for (int i = 0; i < words.length; i++) {
words[i] = words[i].replaceAll("[^\\w]", "");
}
return words.length;
}