标题: 文本替换问题:把所有在偶数位置的a换成b
[打印本页]
作者: pusofalse
时间: 2008-4-24 16:53
标题: 文本替换问题:把所有在偶数位置的a换成b
a.txt
aaaaaaaaaaaaa
输出为
ababababababab
即 把所有在偶数位置的a换成b~
───────────────── 版务记录 ─────────────────
执行:HAT
操作:[2008-10-20]在帖子标题中增加搜索关键字
说明:原标题"文本替换问题"不利于论坛搜索
───────────────── 版务记录 ─────────────────
[
Last edited by HAT on 2008-10-20 at 09:58 ]
作者: huahua0919
时间: 2008-4-24 16:58
@echo off
set str=aaaaaaaaaaaaa
set str=%str:aa=ab%
echo %str%
pause
作者: pusofalse
时间: 2008-4-24 17:07
Quote: |
Originally posted by huahua0919 at 2008-4-24 04:58 PM:
@echo off
set str=aaaaaaaaaaaaa
set str=%str:aa=ab%
echo %str%
pause |
|
谢谢。。
原来就这么简单~ 想了很长时间的问题,看来是我想的太复杂了~
作者: terse
时间: 2008-4-24 17:19
如偶数位不是a 就替换不了啊
@echo off&setlocal enabledelayedexpansion
for /f "delims=" %%i in (a.txt) do (
set "str=%%i"
call :lp
)
pause
goto :eof
:lp
set str1=!str:~%n%,1!
if defined str1 set/a n+=2&set str2=!str2!!str1!b&goto lp
set n=&echo !str2!
set str2=
[
Last edited by terse on 2008-4-24 at 05:21 PM ]
作者: slore
时间: 2008-4-24 20:54
那你给的测试数据有问题……
作者: bat-zw
时间: 2008-4-24 23:28
标题: 也来一个:
文本输出问题,我最喜欢,也来凑个热闹了(考虑通用性哈):
@echo off&setlocal enabledelayedexpansion
set n=-2
:begin
set /a n+=2
for /f "delims=" %%i in (a.txt) do (
set a=%%i&set a=!a:~%n%!
if not "!a!"=="" (
set str=!a:~,1!
set var=!var!!str!b
goto begin
)
echo !var!
)
pause>nul&goto :eof
[
Last edited by zw19750516 on 2008-4-24 at 11:31 PM ]
作者: bat-zw
时间: 2008-4-24 23:51
晕,上面还是没考虑到字符总数是奇数时会多一个b的情况,修改如下:
echo off&setlocal enabledelayedexpansion
set n=-2&set b=b
:begin
set /a n+=2
for /f "delims=" %%i in (a.txt) do (
set a=%%i&set a=!a:~%n%!
if "!a:~1!"=="" set "b="
if not "!a!"=="" (
set str=!a:~,1!
set var=!var!!str!!b!
goto begin
)
echo !var!
)
pause>nul&goto :eof
作者: 26933062
时间: 2008-4-25 00:53
通用加效率
@echo off
for /f "delims=" %%a in (a.txt) do (
set str=%%a&set "num="
call :loop
)
pause
:loop
set num=%num%%str:~0,1%b
set str=%str:~2%
if not defined str echo %num%&goto :eof
goto loop
作者: 26933062
时间: 2008-4-25 01:10
考虑奇数行
:
@echo off
for /f "delims=" %%a in (a.txt) do (
set str=%%a&set "num="
call :loop
)
pause
:loop
if not "%str:~1,1%"=="" (set num=%num%%str:~0,1%b) else set num=%num%%str%
set str=%str:~2%
if not defined str (echo %num%&goto :eof)
goto loop