返回列表 发帖

【练习-007】批处理去除指定字符前所有的0


如文本1.txt:
0000acb0h
0b0c00a000s
0000h00ga00
a0000000COPY
通过批处理将文本所有字符串字符a前的0去除输出如下:
acb0h
bca000s
hga00
a0000000COPY
要求:代码简洁、高效、通用,不生成临时文件
-----------------------------------------------------
本题已有较完美的解答方案:
  见9楼pusefalse版主和本人10楼的方案。


[ 本帖最后由 batman 于 2008-8-4 17:55 编辑 ]
***共同提高***

提示一下:
  开启变量延迟是我们常用的方法,但大家想一想本题是不是可以不开变量延迟?
***共同提高***

TOP

我们出题目的目的在于让大家都活跃下思路,在设法解题的过程中能得到提高。

本题确实不难,希望大家充分利用好每次出题的机会来提高自己,同时也可获
得一定的积分奖励(当然这并不是目的所在)。
***共同提高***

TOP

我的解:
@echo off
for /f "tokens=1,2 delims=a" %%i in (1.txt) do (
     if "%%j" neq "" (
        set "str=%%i"
        call,set "str=%%str:0=%%"
        call,echo %%str%%a%%j
        ) else (
        echo a%%i
     )
)
pause>nulCOPY
1

评分人数

    • keen: 牛就一个字!!!PB + 6
***共同提高***

TOP

批处理之所以如此得到大家的青睐,是因为它可以现写现用很方便,
同时从一另一层面上就要求我们具体问题具体对待,相信谁也不会
回为要解决一个普通的问题而写出一个适合出所有此类问题的代码
吧,如真要这样做,在时间上的损耗将是一笔无可估量的损失,我
们也会因此而得不偿失。
1

评分人数

    • more: 是我想复杂了PB + 4
***共同提高***

TOP

感谢大家对本贴的关注,其实我出这道题目的根本目的在于充分开放大家的思路,
本来去除指定字符前的0字符最保险的方法就是逐字符判断法,但这种办法的效率
是可想而知的,一旦要处理的字符量巨大的话,将会损耗我们大量的时间,所以要
求大家针对具体问题找出简洁高效的解决方案。所以对于代码是否通用性强其实并
不是我们所要考虑的主要问题,而大家所讨论的焦点无疑放在了代码的通用性上,
我认为这就偏离了我们所要研究的核心(当然并不是说代码的通用性不重要),所
以请后面跟贴的朋友将讨论重心放在思路和技巧上。
***共同提高***

TOP

返回列表