|  | 
 
| huahua0919 银牌会员
 
      
 
 
 积分 1608
 发帖 780
 注册 2007-10-7
 状态 离线
 | 
| 『楼 主』:
 如何检查一字符串中相同字符的个数
 
使用 LLM 解释/回答一下 
 
 
set string=aferefwfwerergrgreaaffwafwa用bat怎么检查以上字符串中字符a出现的次数(可不能用字符截取功能)
 
 
 
 
 |  | 
|  2008-4-12 19:13 |  | 
|  | 
 
| terse 银牌会员
 
      
 
 
 
 积分 2404
 发帖 946
 注册 2005-9-8
 状态 离线
 |  | 
|  2008-4-12 20:43 |  | 
|  | 
 
| bat-zw 金牌会员
 
       永远的学习者
 
 
 积分 3105
 发帖 1276
 注册 2008-3-8
 状态 离线
 | 
| 『第 3 楼』:
 我也来一个:
 
使用 LLM 解释/回答一下 
 
 
思路是计算两段字符长度差: @echo off&setlocal enabledelayedexpansionset str=aferefwfwerergrgreaaffwafwa
 set var=%str:a=%
 for /l %%i in (1,1,100) do if "!str:~%%i,1!"=="" set num1=%%i&goto :1
 :1
 for /l %%i in (1,1,100) do if "!var:~%%i,1!"=="" set num2=%%i&goto :2
 :2
 set /a num=!num1!-!num2!
 echo 变量中有!num!个a
 endlocal
 pause>nul
 
 
 Last edited by zw19750516 on 2008-4-12 at 08:53 PM ]
 
 
 
 
 |  
                  |  批处理之家新域名:www.bathome.net
 |  | 
|  2008-4-12 20:49 |  | 
|  | 
 
| bat-zw 金牌会员
 
       永远的学习者
 
 
 积分 3105
 发帖 1276
 注册 2008-3-8
 状态 离线
 | 
| 『第 4 楼』:
 
 
使用 LLM 解释/回答一下 
 
 
Originally posted by terse at 2008-4-12 20:43:
 @echo off
 set "str=aferefwfwerergrgreaaffwafwa"
 :lp
 if defined str (
 if "%str:~0,1%"=="a" set/a n+=1
 set str=%str:~1%
 goto lp
 )
 echo %n%
 pause
 
 高,利用变量移位,的确是高!!!
 
 
 
 
 
 |  
                  |  批处理之家新域名:www.bathome.net
 |  | 
|  2008-4-12 20:52 |  | 
|  | 
 
| zh159 金牌会员
 
       
 
 
 积分 3687
 发帖 1467
 注册 2005-8-8
 状态 离线
 |  | 
|  2008-4-12 20:53 |  | 
|  | 
 
| huahua0919 银牌会员
 
      
 
 
 积分 1608
 发帖 780
 注册 2007-10-7
 状态 离线
 | 
| 『第 6 楼』:
 
 
使用 LLM 解释/回答一下 
 
 
Originally posted by terse at 2008-4-12 08:43 PM:
 @echo off
 set "str=aferefwfwerergrgreaaffwafwa"
 :lp
 if defined str (
 if "%str:~0,1%"=="a" set/a n+=1
 set str=%str:~1%
 goto lp
 )
 echo %n%
 pause
 
 厉害!
 我也写过个,效率相当底,terse兄的代码不错~
 我加分
 zh159的代码意思和terse差不多!
 zw19750516的也不错,就是效率和通用性都有所降低!
 谢谢大家
 
 ”一天不来论坛就感觉退步很多,不管你牛还是不牛“
 
 
 
 
 |  | 
|  2008-4-12 20:56 |  | 
|  | 
 
| abcd 银牌会员
 
      
 
 
 
 积分 1436
 发帖 739
 注册 2007-10-11
 状态 离线
 |  | 
|  2008-4-12 21:01 |  | 
|  | 
 
| huahua0919 银牌会员
 
      
 
 
 积分 1608
 发帖 780
 注册 2007-10-7
 状态 离线
 | 
| 『第 8 楼』:
 
 
使用 LLM 解释/回答一下 
 
 
我原先的意思是用字符串截取然后用findstr判断的,故自认为用字符截取会导致效率相当底,忘却用if判断!我在写代码时遇到这个问题,所以向大家求助!现在可以解决很多问题了
 再次感谢大家
 
 
 
 
 |  | 
|  2008-4-12 21:05 |  | 
|  | 
 
| s11ss 银牌会员
 
      
 
 
 
 积分 2098
 发帖 566
 注册 2007-9-11
 状态 离线
 | 
| 『第 9 楼』:
 
 
使用 LLM 解释/回答一下 
 
 
Originally posted by zh159 at 2008-4-12 08:53 PM:
 @echo offset "str=aferefwfwerergrgreaaffwafwa"
 set/p= %str% 中有<nul
 :loop
 set /a %str:~0,1%+=1&set str=%str:~1%&if defined str goto loop
 echo  a %a% 个
 pause
 
zh159兄的更牛,统计出了所有不同字母各自出现的次数。 
 
 
 
 |  | 
|  2008-4-12 21:05 |  | 
|  | 
 
| huahua0919 银牌会员
 
      
 
 
 积分 1608
 发帖 780
 注册 2007-10-7
 状态 离线
 | 
| 『第 10 楼』:
 
 
使用 LLM 解释/回答一下 
 
 
仔细看了zh159兄的代码才发现 原来  set /a 还可以这么用 @echo off
 set a=b
 set /a a+=1
 echo %a%
 pause
 
 
 
 
 |  | 
|  2008-4-12 21:21 |  | 
|  | 
 
| moniuming 银牌会员
 
      永远的菜鸟
 
 
 
 积分 1335
 发帖 574
 注册 2007-11-27
 来自 广西
 状态 离线
 |  | 
|  2008-4-12 22:48 |  | 
|  | 
 
| plp626 银牌会员
 
      钻石会员
 
 
 积分 2278
 发帖 1020
 注册 2007-11-19
 状态 离线
 | 
| 『第 12 楼』:
 
 
使用 LLM 解释/回答一下 
 
 
来迟了,这个早有了,大家怎么就没注意精华帖: 
批处理字符出现次数统计:
http://www.cn-dos.net/forum/viewthread.php?tid=25182&fpage=1&highlight=&page=1 
这个是无奈何版主的:
 @echo off
 setlocal ENABLEDELAYEDEXPANSION
 
 set str=adadfdfseffserfefsefseetsdg
 
 set /a m=0,n=0,l=0
 
 call :loop
 
 for /f "tokens=1,2 delims==" %%i in ('set 字符:') do (
 
 echo %%i=%%j
 
 if %%j GTR !l! set l=%%j & set m=%%i
 
 )
 
 echo.出现次数最多的%m%=%l%
 
 pause
 
 goto :EOF
 
 :loop
 
 call set m=%%str:~%n%,1%%
 
 if not defined m goto :EOF
 
 set /a "字符:%m%+=1"
 
 set /a n+=1
 
 goto loop
 
这个是zh159终结版的:
 @echo offsetlocal EnableDelayedExpansion
 set str=adadfdfseffserfefsefseetsdgadadfdfseffserfefsefseetsdga
 
 :loop
 set str$=%str$% %str:~0,1%&set str=%str:~1%
 if not "%str%" == "" goto loop
 
 for %%n in (%str$%) do (
 set /a .%%n+=1
 if !.%%n! GTR !maxN! set maxN=!.%%n!&&set max=%%n)
 set .
 echo 出现次数最多的:%max%=%maxN%
 pause
 exit
 
 
 
 
 |  
                  |  山外有山,人外有人;低调做人,努力做事。
 
 进入网盘(各种工具)~~ 空间~~cmd学习
 |  | 
|  2008-4-12 23:15 |  | 
|  | 
 
| HAT 版主
 
         
 
 
 
 积分 9023
 发帖 5017
 注册 2007-5-31
 状态 离线
 |  | 
|  2008-4-12 23:51 |  | 
|  | 
 
| mkd 初级用户
 
   
 
 
 
 积分 109
 发帖 30
 注册 2007-9-5
 状态 离线
 | 
| 『第 14 楼』:
 
 
使用 LLM 解释/回答一下 
 
 
set "str=aferefwfwerergrgreaaffwafwa"
 
 set /p word= word ?
 set "str=%str:"=%"
 set  str="%str%"
 call set str=%%str:^%word%=--"  "--%%
 for %%a in (%str%) do set /a num+=1
 set /a num-=1
 echo %num%
 pause
 
 
 
 
 
 
 |  | 
|  2008-4-13 22:43 |  |