&&既然楼主如此求真,那么我就索性再给出一种方法并加以简单说明,借用原练习的文本a.txt如下:- aaaaaaa aaaa bbbbbb ccccccccccc dddd
- aa aaaaaaa bbbbbbbb cccccccccc ddddddddddddd eeeeeee
- aaaaaaaaaaaa bbbbbbbbbbb cccccccccccccccccccc
- aaaaaaaaa ccccccccc bbbbbbbbbbbbb ddddddddddddddddd
- aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aa
- aaaaaaaaaaaaaaaaaaaaaaaaaaaa bbbbbbbbbb
复制代码 现在我们来找出其中字符数最多的行(含空格),代码如下:- @echo off&setlocal enabledelayedexpansion
- set /a max=0
- for /f "tokens=1,2 delims=:" %%a in ('"(type a.txt&echo.)"^|findstr /o .*') do (
- set /a b=%%a
- if "!a!" neq "" (
- set /a a=b-a-2
- if !a! geq !max! set /a max=a&set "_!max!=!str!"
- )
- set /a a=%%a&set "str=%%b"
- )
- echo 字符数最多的行为!_%max%!,字符数有%max%个
- pause>nul
复制代码
- 说明:
- 首选我们来说下findstr /o,这是个打印字符偏移量的命令,而所谓偏移就肯定有原始点,那么这个原始点是不
-
- 是每行的开头(最左端)呢?不是,这个原点是文档的最左上角。而偏移量是指的光标距这个原点的运行距离,所以不
-
- 总是指的直线距离,并且是累加的。而文本每行的结束都有两个不可见字符回车和换行符,因此每换一行字符偏移
-
- 量要加上2,在这里还要说明下文本每多一个半角字符偏移量+1,多一个全角字符偏移量+2,而我们的a.txt中只有半
-
- 角字符,所以字符数和偏移量完全可以对应起来,而findstr /o计算出的偏移量均表示的是行首距原点的偏移量,因
-
- 此用下行行首的偏移量减去上行行首偏移量就能得出上行的字符数。但这里又出来一个问题,最后一行怎么办?因
-
- 此在代码中用type a.txt&echo.为输出多加了一个空行,再将输出结果进行findstr /o .*,这样就能计算出末行的字符
-
- 数了。至于怎么判断哪一行的字符数最多并赋值输出的过程,我想楼主应该明白,在这里就不再说明了。如果文本
-
- 中既有半角字符又有全角字符,那么本人推荐使用随风版主的折半法来计算每行的字符数。
复制代码
[ 本帖最后由 batman 于 2010-2-6 12:23 编辑 ] |