[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

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


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


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

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

TOP

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

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

TOP

我的解:
  1. @echo off
  2. for /f "tokens=1,2 delims=a" %%i in (1.txt) do (
  3.      if "%%j" neq "" (
  4.         set "str=%%i"
  5.         call,set "str=%%str:0=%%"
  6.         call,echo %%str%%a%%j
  7.         ) else (
  8.         echo a%%i
  9.      )
  10. )
  11. pause>nul
复制代码
1

评分人数

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

TOP

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

评分人数

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

TOP

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

TOP

返回列表