标题: [ 新手习题] 批处理去除字符串前所有的0 [打印本页]
作者: yslyxqysl 时间: 2009-1-15 18:46 标题: [ 新手习题] 批处理去除字符串前所有的0
用户输入一串字符后,去除此字符串前所有的0。
例如:
014 -----> 14
040 -----> 40
002740 -----> 2740
最优方案:10分;
一般方案:5分;
判断是否为纯数字:3分。
参考:for语句从入门到精通
[ 本帖最后由 yslyxqysl 于 2009-1-15 20:39 编辑 ]
作者: rat 时间: 2009-1-15 21:39
- @echo off
- :accept
- set /p n=Please input a number:
- echo.%n%|findstr "^[0-9][0-9]*$">nul||goto accept
-
- :loop
- if "%n:~0,1%" neq "" if "%n:~0,1%"=="0" call set n=%%n:~1%%&goto loop
-
- echo.%n%
- set "n="
- pause
复制代码
[ 本帖最后由 rat 于 2009-1-15 21:59 编辑 ]
作者: rat 时间: 2009-1-15 22:10
- @echo off & setlocal enabledelayedexpansion
- :accept
- set /p n=Please input a number:
- echo.%n%|findstr "^[0-9][0-9]*$">nul||goto accept
-
- set i=0&set "s="&set "f="
-
- :loop
- if "!n:~%i%,1!" neq "" set "s=!s! !n:~%i%,1!"&set /a i=i+1&goto loop
-
- for %%a in (%s%) do if not defined f (if %%a neq 0 set r=!r!%%a&set f=1) else set r=!r!%%a
- echo.%r%
- pause
复制代码
作者: zqz0012005 时间: 2009-1-15 22:22
利用tokens=*
- @echo off
- :accept
- set /p n=Please input a number:
- echo.%n%|findstr "^[0-9][0-9]*$">nul||goto accept
- for /f "tokens=* delims=0" %%a in ("%n%") do echo %%a
- echo.&pause
复制代码
作者: zqz0012005 时间: 2009-1-15 22:31
判断是否为纯数字还用一种好用的方法:
将待检测的字符串作为 set /a 运算的变量名,如果是纯数字会出现“运算符不存在”的错误。
set /a %n%=1 2>nul&&echo NaN
作者: rat 时间: 2009-1-15 22:54 标题: 再来
- @set @j=1/*&set "@j="&set /p n=Input a number:&call cscript -nologo -e:jscript "%~f0" %%n%%&set "n="&pause&goto:eof */
- if(!isNaN(WSH.Arguments(0)))WSH.Echo(WSH.Arguments(0).replace(/^(0+)/, ""))
复制代码
作者: tireless 时间: 2009-1-15 22:56
- @echo off
- set /p str=请输入:
- for /f "tokens=* delims=0 " %%a in ("%str%") do echo %%a
- for /f "tokens=* delims=0123456789 " %%a in ("%str%") do (
- if "%%a"=="" (echo 纯数字) else (echo 非纯数字)
- )
- pause
复制代码
作者: rat 时间: 2009-1-16 00:03 标题: 未检查是否是纯数字
- @set /p n=Plz input:&(call echo e0:200 '%%n%%$'&more /e +1 "%~f0")|debug|findstr /v "^[I\-0P]"&pause>nul&goto:eof
- a100
- mov ds,ax
- cmp byte ptr [200+bx],30
- je 113
- lea dx,[200+bx]
- mov ah,9
- int 21
- int 20
- inc bx
- jmp 102
-
- g
- q
复制代码
作者: rat 时间: 2009-1-16 09:45 标题: 再来
- '&@cls&set /p n=Plz input:&call cscript -nologo -e:vbs "%~f0" %%n%%&pause&goto:eof
- WSH.Echo Replace(LTrim(Replace(WSH.Arguments(0), "0", " ")), " ", "0")
复制代码
作者: skuny 时间: 2009-1-16 12:17
- @echo off&setlocal enabledelayedexpansion
- :111
- set "a="
- set /p a="请输入:"
- echo %a%|findstr "^[0-9][0-9]*$">nul
- if %errorlevel%==1 echo %a%不是纯数字&goto 111
- :222
- if "!a:~0,1!"=="0" set "a=!a:~1!"&goto 222
- echo 除0纯数字%a%&goto 111
复制代码
[ 本帖最后由 skuny 于 2009-1-16 12:19 编辑 ]
作者: rat 时间: 2009-1-18 18:33 标题: 回复 10楼 的帖子
- @echo off
- :111
- set "a="
- set /p a="请输入:"
- echo %a%|findstr "^[0-9][0-9]*$">nul
- if %errorlevel%==1 echo %a%不是纯数字&goto 111
- :222
- if "%a:~0,1%"=="0" set "a=%a:~1%"&goto 222
- echo 除0纯数字%a%&goto 111
复制代码
作者: terse 时间: 2009-1-18 21:57
新手习题 都给你们占了 ~5
- @echo off
- :lp
- cls&set /p var=输入字符串:
- echo %var%|findstr "^[0-9]*$">nul || goto lp
- :lp1
- if %var:~,1% neq 0 (echo %var%&pause)else set var=%var:*0=%&goto lp1
复制代码
[ 本帖最后由 terse 于 2009-1-18 22:24 编辑 ]
作者: Batcher 时间: 2009-1-18 22:38
不是新手的,楼主通通给他们扣分,哈哈。
作者: cjiabing 时间: 2009-1-18 23:05
晕,找了半天不知道从哪里发帖?
作者: vyuwwen1985 时间: 2009-1-19 09:48 标题: 答楼主!
我也发一个!
- @echo off
- :kaishi
- set /p n=请输入:
- echo.%n%|findstr "^[0-9][0-9]*$">nul||goto kaishi
- :panduan
- if not "%n:~0,1%"=="0" (echo %n%&pause&goto kaishi) else (goto begin)
- :begin
- set n=%n:~1%&goto panduan
-
-
-
复制代码
作者: skuny 时间: 2009-1-19 11:21
感谢rat提出纠正哈!!
作者: Batcher 时间: 2009-1-19 13:34 标题: 回复 14楼 的帖子
右上角有个按钮“新帖”
作者: myzwd 时间: 2009-2-28 17:19 标题: 回复 1楼 的帖子
- @echo off
- set /p str=
- echo. %str%
- echo *****************************
- if %str:~0,1% neq 0 (echo This is not a numeral ---NaN & echo bye & goto:eof)
- echo orginal str---%str%
-
- :one
- if %str:~0,1% equ 0 (set str=%str:~1% )
- if %str:~0,1% equ 0 goto one
-
-
- :end
- echo string after delete zero---- %str%
复制代码
[ 本帖最后由 myzwd 于 2009-2-28 17:31 编辑 ]
作者: keen 时间: 2009-3-24 14:15
我来凑一个
- @echo off
- set /p num=please input number:
- :start
- set var=%num:~0,1%
- if %var% equ 0 (set num=%num:~1% & goto start) else (echo %num% & pause)
复制代码
作者: cainiao736 时间: 2009-3-26 22:09
- @echo off
- set /p str=请输入字符:
- :begin
- set a=%str:~0,1%
- if not %a%==0 (goto eof) else ( set %a%==""&&set str=%str:~1%&&goto begin )
- :eof
- echo %str%
- pause
复制代码
[ 本帖最后由 cainiao736 于 2009-3-26 22:33 编辑 ]
作者: flyingsand 时间: 2009-3-28 16:10
- @echo off
- :input
- cls
- set /p str=请输入一串字符(纯数字):
- echo.%str%|findstr "^[0-9]*$">nul|| (cls& echo 所输入的不是纯数字,请重新输入& pause& goto input)
- for /f "delims=0 tokens=1*" %%i in ("10%str%") do set str2=%%j
- cls
- echo 你输入的字符串为:%str%
- echo 去前面所有的零为:%str2%
- pause
- goto input
复制代码
作者: cheng520 时间: 2011-1-30 10:37
我菜鸟而且,来瞧瞧
作者: we6540 时间: 2011-2-4 21:02
- @echo off
- setlocal EnableDelayedExpansion
- set /p d=用户输入一串字符:
- for %%i in (%d%) do (
- set a=%%i
- set b=!a:~1,5!
- set c=!b:~-4!
- echo !c!
- )
- pause
- set a=
- set b=
- set c=
- set d=
复制代码
作者: bbwanwt123 时间: 2011-4-9 17:50
哈哈 各有千秋呀
作者: dosbat 时间: 2011-4-20 13:04
- @echo off
- set /p n=请输入字符串:
-
- echo %n%|findstr "^[0-9][0-9]*$">nul
- if errorlevel 1 echo 不是纯数字&pause&goto :eof else (
- :loop
- if "%n:~0,1%"=="0" (
- set n=%n:~1%
- echo %n%
- goto loop
- ) else goto ex ::一旦出现第一个不是0的字符则跳出
-
- )
- :ex
- echo %n%
- pause
复制代码
作者: battab 时间: 2014-2-18 22:45
本帖最后由 battab 于 2014-2-18 22:51 编辑
回复 1# yslyxqysl - @echo off
- :r
- set "input="
- set /p input=请输入要入理的数字串:
- echo %input%|findstr "^[0-9][0-9]*$">nul||(echo 包含非数字)&&goto r
- set str=%input%
- :l
- if "%str:~0,1%"=="0" (set str=%str:~1%) else (goto end)
- goto l
-
- :end
- echo %str%
- pause>nul
- echo 继续请按r,退出请按任意键。
- set "enter="
- set /p enter=请输入:
- if "%enter%"=="r" goto r else exit
复制代码
作者: sbjugt 时间: 2014-3-7 18:04
@echo off
echo 请输入内容
set /p a=
:a
if %a:~0,1% neq 0 goto :b
set a=%a:~1%
goto :a
:b
echo %a%
pause
作者: shelluserwlb 时间: 2014-11-9 17:21
本帖最后由 shelluserwlb 于 2014-11-9 17:24 编辑
- @echo off
- setlocal enabledelayedexpansion
- :again
- set /p n=请输入一段字符(纯数字):
- echo %n%|findstr "^[0-9][0-9]*$">nul||goto again
- for /l %%i in (0,1,1000) do (
- echo !n:~%%i,1!|findstr "0" >nul||(echo !n:~%%i! & goto :end)
- )
- :end
- pause
复制代码
作者: amwfjhh 时间: 2014-11-11 13:25
rat 发表于 2009-1-15 22:54
批处理文件当js文件用,学习了……
作者: ann 时间: 2014-12-13 21:02
也发一个吧,没考虑太多- @echo off&setlocal enabledelayedexpansion
- set /p sr=请输入数字:
- for /l %%a in (0 1 1000) do (set sw=!sr:~%%a,1!&if not "!sw!"=="0" (call :qc %%a))
- :qc
- set aa=%1
- goto ii
- :ii
- set sc=!sr:~%aa%!
- echo %sc%
- goto end
- :end
- pause>nul&exit
复制代码
欢迎光临 批处理之家 (http://bbs.bathome.net/) |
Powered by Discuz! 7.2 |