Board logo

标题: [求助]求统计文本中字数的批处理 [打印本页]

作者: foxandmonkey     时间: 2005-4-20 00:00    标题: [求助]求统计文本中字数的批处理
英文的文本,每个word计一个数,求总word数,不用第三方程序,不知道有没有办法解决。
我想做个数列递增/减排序bat,解决了这个问题就很容易处理任意长度的序列了

作者: Wengier     时间: 2005-4-20 00:00
你是指DOS下還是NT命令行下?如果是DOS下的話不用第三方工具的話基本上是不可能解決的。而如果用第三方的工具的話就非常容易了。

作者: foxandmonkey     时间: 2005-4-20 00:00
在nt5.x命令行下,用了3方工具的话可移植度就差了,如果用的话完全可以自己用C编译一个。

作者: willsort     时间: 2005-4-22 00:00
Re foxandmonkey:  在NT5.x环境下,虽然我没有实际尝试,但我相信不利用第三方工具是可以完成的,最大的可能就是利用for与set或者其它可能的命令和工具。  但我对编写NT下的批处理并不十分热心,原因正是你所提到的“可移植性”,NT下批处理在9x和DOS环境下得不到完整有效的支持。  如果,这个题目放在DOS下,我想最有可能用汇编脚本来实现,简单的思路就是判断单词分界符的个数,但我的汇编基础很低,在此方面帮上你什么了;另一个实现的思路是用命令行循环,将文件的每行作为一条批处理命令的参数,然后统计参数的个数即可,其间可能还需要用到文本行逐行处理的循环(这在我的“文件遍历”批处理中可以找到),但它又可能出现某些小小的错误,比如将带引号的句子认作一个单词,至于如何统计(数列递增/减),你可以参考我编写的《通用进位数值加法器》和《按序列转换的批处理》;当然,可能还存在着第三种思路,那就是将所要用到的第三方工具直接“打包”进批处理中,在运行时再动态解包(简单的方式是DEBUG,复杂一些的是自身携带的专用编码/解码器代码),这样抵消了使用第三方程序对可移植性的影响,但代价是程序文件的体积膨大、运行速度的下降以及天书一样难以阅读的核心算法。  另外,正如Wengier所说,此题用第三方工具是很容易实现的。此类问题,国外的编程者经常使用Gawk(Awk脚本的GPL解释器,有16位DOS版和32位Win版)、sed(一个命令行文本流处理器)以及其它的命令行脚本工具,而非使用纯批处理(pure batch),因为这通常只需要一两行代码,而在纯批处理中可能需要上百行,而可移植性对于此类应用性题目来说,通常是不需要的。