|
26933062
银牌会员
积分 2268
发帖 879
注册 2006-12-19
状态 离线
|
『第
16 楼』:
没注意 11 楼 HAT 兄的回帖,抱歉。。。
我的思路与你不一样,兴许你的代码更高效简洁,期待你的结果。。。
|
致精致简! |
|
2008-5-12 02:14 |
|
|
26933062
银牌会员
积分 2268
发帖 879
注册 2006-12-19
状态 离线
|
『第
17 楼』:
回复 15 楼
Quote: | Originally posted by zw19750516 at 2008-5-12 02:13:
[code]
@echo off&setlocal enabledelayedexpansion
set "str=bat1 ,1bbat;22 t2bat;3 ,3 3bat444babat"
:lp
if "%str:~,3%"=="bat" (
echo.!var!&set var= ... |
|
不错,但还有个bug 若str结尾不是bat时,会丢失最后的字符。
[ Last edited by 26933062 on 2008-5-12 at 02:23 AM ]
|
致精致简! |
|
2008-5-12 02:20 |
|
|
bat-zw
金牌会员
永远的学习者
积分 3105
发帖 1276
注册 2008-3-8
状态 离线
|
|
2008-5-12 02:28 |
|
|
bat-zw
金牌会员
永远的学习者
积分 3105
发帖 1276
注册 2008-3-8
状态 离线
|
|
2008-5-12 02:32 |
|
|
26933062
银牌会员
积分 2268
发帖 879
注册 2006-12-19
状态 离线
|
『第
20 楼』:
18 楼
不错不错,提两个建议:
set a=%str:~,1%&set var!n!=!var%n%!!a!
可改为 set var!n!=!var%n%!%str:~,1%
加一个判断,可避免连续batbat时显示的空行。
for /l %%i in (0,1,!n!) do if defined var%%i echo.!var%%i!
|
致精致简! |
|
2008-5-12 02:42 |
|
|
HAT
版主
积分 9023
发帖 5017
注册 2007-5-31
状态 离线
|
『第
21 楼』:
zw19750516 兄的方法比我的要简洁,学习了,我的还是放弃算了。
|
|
2008-5-12 02:45 |
|
|
bat-zw
金牌会员
永远的学习者
积分 3105
发帖 1276
注册 2008-3-8
状态 离线
|
|
2008-5-12 02:46 |
|
|
terse
银牌会员
积分 2404
发帖 946
注册 2005-9-8
状态 离线
|
『第
23 楼』:
其实开始我想的就是逐字判断 后来看可以删 我就用替换了 呵呵 考试老不及格哦 补上一个 算练习吧
@echo off&setlocal enabledelayedexpansion
set "str=bats afi/ ouy#ewbattnvbib atcghbat ret,yre;wih9 %bat"
:lp
if not "!str:~,3!"=="bat" (set var=!var!!str:~,1!) else (
if not "!var!"=="" echo !var!&set var=
set str=!str:~2!
)
set str=!str:~1!
if defined str goto lp
if not "!var!"=="" echo !var!
pause
|
简单!简单!再简单! |
|
2008-5-12 12:31 |
|
|
26933062
银牌会员
积分 2268
发帖 879
注册 2006-12-19
状态 离线
|
『第
24 楼』:
贴一个我的,效率应该比逐字判断要快点吧?
@echo off
set "Str=bat1 ,1bbatbatbat;22 t2bat;3 ,3 3batbat444babat"
:loop
set "num=%str:*bat=%"
call set "var=a%%str:bat%num%=%%a"
if not "%var%"=="aa" echo.%var:~1,-1%
set "str=%num%"
if "%str%"=="%var:~1,-1%" set "num="
if defined num goto loop
pause
|
致精致简! |
|
2008-5-12 13:42 |
|
|
FQ
社区乞丐
积分 -61
发帖 37
注册 2008-4-19
状态 离线
|
『第
25 楼』:
为何不能用替换呢?其实替换是很简单的啊
@echo off&setlocal
set "str=bat1 ,1bbat;22 t2bat;3 ,3 3bat444babat999999999"
for %%a in ("%str:bat=" "%") do echo/%%~a
|
|
2008-5-12 13:55 |
|
|
clian76
中级用户
积分 363
发帖 162
注册 2007-4-22
状态 离线
|
|
2008-5-12 16:49 |
|