Board logo

标题: 统计文档中,逗号出现的次数 [打印本页]

作者: 26933062     时间: 2007-8-6 23:34    标题: 统计文档中,逗号出现的次数

看到  namejm 荣誉版主  曾经发的一个老帖,觉得挺有意识,原帖中又没有满意的答案
所以重发出来讨论一下,看有没有更好的方法.
a.txt内容
1  ,2, 3,4,
7,8, 9  9,w  ww,qer, ,,

要求:
统计a.txt中,逗号出现的次数.

原帖
http://www.cn-dos.net/forum/view ... highlight=%2Bnamejm

[ Last edited by 26933062 on 2007-8-7 at 02:49 AM ]
作者: 26933062     时间: 2007-8-7 02:52
无人问津!
难道是题目太简单了,都不愿回答?
那就增加点难度,
1:a.txt内容如下,
2:-----------------------------,
3:(注意:有个空行是由空格组成),
4:!" ",!
        
6::`-=\] [';/.,

8:;<,>
9::!!,!
10:"" ",
11:","
12:"a",
13:"b" c",
14:%,%
15:!,!
16:!"!,
17:~!@# $ %^& *()_+|}{":?><12,
18:-----------------------------,
19:要求:,
20:原样显示a.txt的内容.并查找a.txt中有几个逗号,
;<>><|"*===============================================================,

[ Last edited by 26933062 on 2007-8-7 at 02:40 PM ]
作者: jmz573515     时间: 2007-8-7 11:27
vbs的
CODE:  [Copy to clipboard]
msgbox ubound(split(createobject("scripting.filesystemobject").opentextfile("a.txt").readall,","))

作者: 26933062     时间: 2007-8-7 14:39
集各家所长.
CODE:  [Copy to clipboard]
@echo off
for /f "delims=" %%i in ('findstr /n .* a.txt') do (
set "var=%%i"
call :ss
)
echo.&echo  共有 %a% 个逗号.
echo.&pause&exit
:ss
set "num=%var:"=%"
set "num=%num:*:=%"
:lis
echo "%num%"|findstr ",">nul&&(
set/a a+=1
set "num=%num:*,=%"
goto lis
)
setlocal ENABLEDELAYEDEXPANSION
set var=!var:*:=!
echo.!var!
endlocal
goto :eof
不用延迟好像也可以
CODE:  [Copy to clipboard]
@echo off
for /f "tokens=1* delims=:" %%i in ('findstr /n .* a.txt') do (
echo.%%j
set "var=%%i%%j"
call :ss
)
echo.&echo  共有 %a% 个逗号.
echo.&pause&exit
:ss
set "num=%var:"=%"
set "num=%num:*:=%"
:lis
echo "%num%"|findstr ",">nul&&(
set/a a+=1
set "num=%num:*,=%"
goto lis
)
goto :eof
[ Last edited by 26933062 on 2007-8-7 at 03:04 PM ]
作者: tyh     时间: 2007-8-7 17:03
呵呵。不用显示的话:
CODE:  [Copy to clipboard]
@echo %on% off
set n=0
for /f "delims=" %%a in (a.txt) do (
        set "str=%%a"
        call set "str=%%str:"=%%"
        call :ct
)
echo 共有%n%个逗号。
pause&&goto :eof
:ct
set m=0
:ct2
call set "onestr=%%str:~%m%,1%%"
set /a m+=1
if "%onestr%"=="," set /a n+=1
if "%onestr%"=="" goto :eof
goto :ct2
楼上知道我是谁了吧~~ 呵呵




欢迎光临 中国DOS联盟论坛 (http://cndos.fam.cx/forum/) Powered by Discuz! 2.5