标题: 文本输出小考验(看似容易)
[打印本页]
作者: bat-zw
时间: 2008-4-29 00:36
标题: 文本输出小考验(看似容易)
有a.txt内容如下:
0001000a0s
12300bhs001
0779q002
要求通过批处理输出如下:
1aa0s
123bbhs001
779qq002
即删除字母以前所有的0。
作者: pusofalse
时间: 2008-4-29 00:46
貌似还是得用变量截取和移位,一次皆两个,判断后面的是否小于a 如果小于a在判断前面的那个是不是0 是0就删除 我的思路~
[
Last edited by pusofalse on 2008-4-29 at 12:48 AM ]
作者: bat-zw
时间: 2008-4-29 00:47
写出来看看,我觉得你想得复杂了点。
作者: pusofalse
时间: 2008-4-29 01:02
看了你那篇帖子我知道了~ 除以100取余!~
但能不能写出来是个问题。。。
作者: bat-zw
时间: 2008-4-29 01:12
提示:解这个问题还是用截取字符方便点。
作者: 26933062
时间: 2008-4-29 01:16
是删除第一个字母前面所有的0吗?
1aa0s
a和s中间的这个0不要删除是吗?
作者: bat-zw
时间: 2008-4-29 01:18
是的
作者: pusofalse
时间: 2008-4-29 01:25
能提示一下怎样才能判断出 0在字母前面吗?
作者: bat-zw
时间: 2008-4-29 01:30
判断字母就是的
作者: 26933062
时间: 2008-4-29 01:31
看来得先判断出第几位不是数字,这样就得一个一个截取,不知道有没有更高效的办法?
作者: bat-zw
时间: 2008-4-29 01:33
标题: 我还是来抛块砖了:
@echo off&setlocal enabledelayedexpansion
for /f "delims=" %%i in (a.txt) do set code=&set str=%%i&call :lp
pause>nul&goto :eof
:lp
if defined str (
set var=!str:~,1!
if "!var!"=="0" set "var="
set code=!code!!var!
if !var! leq 9 (
set str=!str:~1!&goto lp
) else (
set code=!code!!str!&echo !code!
)
)
作者: qwd
时间: 2008-4-29 01:52
这是删除最后字母前的所有0字符!
@echo off
set/p h=输入字串
:js
set/a l+=1
call set "w=%%h:~-%l%%%"
echo %w%|findstr/i [a-z] &&goto zq ||goto js
:zq
call set "q=%%h:~0,-%l%%%"
set "q=%q:0=%"
echo %q%%w%
pause
删除第一个字母前面的0字符略有改动就行了!还用写吗?
@echo off
set/p h=输入字串
:js
set/a l+=1
call set "q=%%h:~,%l%%%"
echo %q%|findstr/i [a-z]>nul &&goto zq ||goto js
:zq
set "q=%q:0=%"
call set "w=%%h:~%l%%%"
echo %q%%w%
pause
[
Last edited by qwd on 2008-4-29 at 04:04 AM ]
作者: 26933062
时间: 2008-4-29 01:58
:
@echo off
for /l %%a in (0 1 9) do set _%%a=a
for /f "delims=" %%a in (a.txt) do (
set var=&set str=%%a
call :loop
)
pause
:loop
set num=%str:~0,1%
if defined _%num% (set var=%var%%num%) else (
echo %var:0=%%str%&goto :eof
)
set str=%str:~1%
goto loop
作者: xvzheng
时间: 2008-4-29 23:24
很复杂吗??????