Board logo

标题: 文本替换问题:把所有在偶数位置的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