中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --

联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum
DOS,代表着自由开放与发展,我们努力起来,学习FreeDOS和Linux的自由开放与GNU精神,共同创造和发展美好的自由与GNU GPL世界吧!

中国DOS联盟论坛
现在时间是 2026-07-17 07:38
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » [已解决]优化一下计算字符串长度的代码,谢谢! 查看 1,330 回复 4
楼 主 [已解决]优化一下计算字符串长度的代码,谢谢! 发表于 2008-04-11 23:58 ·  中国 广东 东莞 电信
银牌会员
★★★
积分 1,284
发帖 538
注册 2002-11-02 00:00
23年会员
UID 129
性别 男
状态 离线
@echo off
setlocal enabledelayedexpansion
set count=0
set var=abcdefghijklmnopqrstuvwxyz
:count
set /a count+=1
for /f %%i in ("%count%") do if not "!var:~%%i,1!"=="" goto count
echo 字符串 %var% 的长度是 %count% 个字符。
pause


计算字符串长度的例子,我不想使用GOTO语句而想直接在FOR下完成,行不?

[ Last edited by chishingchan on 2008-4-12 at 05:14 PM ]
2 发表于 2008-04-12 12:43 ·  中国 湖北 武汉 电信
中级用户
★★
积分 471
发帖 207
注册 2007-05-03 14:53
19年会员
UID 87369
性别 男
状态 离线
@echo off & Setlocal enabledelayedexpansion

set "var=abcdefghijklmnopqrstuvwxyz"

for /L %%i in (1,1,10000) do (
set count=%%i
if "!var:~%%i,1!"=="" call :end & exit /b 0
)
goto:eof
:end
echo 字符串 %var% 的长度是 %count% 个字符。
3 谢谢,我再优化一下: 发表于 2008-04-12 15:43 ·  中国 广东 东莞 电信
银牌会员
★★★
积分 1,284
发帖 538
注册 2002-11-02 00:00
23年会员
UID 129
性别 男
状态 离线
总结:
@echo off&Setlocal enabledelayedexpansion
set var=abcdefghijklmnopqrstuvwxyz 1234567890
for /l %%i in (1,1,10000) do if "!var:~%%i,1!"=="" echo %%i&pause>nul


[ Last edited by chishingchan on 2008-4-12 at 03:51 PM ]
4 发表于 2008-04-13 07:03 ·  中国 湖北 武汉 电信
版主
★★★★★
积分 11,386
发帖 4,938
注册 2006-07-23 17:10
19年会员
UID 59080
状态 离线
现实结果之后还没完呢,继续优化一下?
5 上个优化是错误的! 再次优化: 发表于 2008-04-14 13:03 ·  中国 广东 东莞 电信
银牌会员
★★★
积分 1,284
发帖 538
注册 2002-11-02 00:00
23年会员
UID 129
性别 男
状态 离线

@echo off&setlocal enabledelayedexpansion&set string=%1
for /l %%i in (1,1,65535) do if "!string:~%%i,1!"=="" echo 字符串 %string% 的长度是 %%i 个字符。&pause>nul&exit /b 0
echo 没有参数字符串,长度是 0 个字符。&pause>nul


[ Last edited by chishingchan on 2008-4-18 at 09:17 AM ]
论坛跳转: