标题: [文本处理] [已解决]批处理去掉字符右边空格的疑问 [打印本页]
作者: tz_being 时间: 2009-11-14 23:42 标题: [已解决]批处理去掉字符右边空格的疑问
先看代码:- call :delright "kk "
- echo "%DelR%"
- pause
-
- :delright
- set "DelR=%~1"
- :delright2
- if "%DelR:~-1%"==" " set DelR=%DelR:~0,-1%&&goto delright2
- goto :eof
复制代码
疑问:此代码能够较好的实现去除字符右边的空格,但有时Call右边的参数"kk "并不是那么有规则,如只是两个空格“ ”或多个空格“ ”(此时不包括字母KK,即第一行代码为call :delright " "),此时代码便会报错。请问该怎样改进代码,才能过滤掉这种纯粹空格的参数。
[ 本帖最后由 tz_being 于 2009-11-15 21:38 编辑 ]
作者: Batcher 时间: 2009-11-14 23:50
参考:批处理去除文本行前后的空格
http://bbs.bathome.net/thread-5584-1-1.html
作者: tz_being 时间: 2009-11-15 00:02
其实发贴前我看过了,当某一行纯粹由多个空格构成时,那个标准答案也解决不了。
作者: Taurus 时间: 2009-11-15 10:53 标题: 回复 1楼 的帖子
这样可以吗?
@echo off
set "str=kk "
set "str=%str: =%"
if "%str%"=="" (echo nothing) else (echo %str%)
pause
作者: tz_being 时间: 2009-11-15 20:18
感谢Taurus解答,DeLeTe朋友给出另外一个近似完成的答案:- @echo off
- call :delright "12 3 "
- echo "%DelR%"
- pause
-
- :delright
- set DelR=
- for %%i in (%~1) do call set DelR=%%DelR%%%%i
- set DelR=%DelR:~1,-1%
- goto :eof
复制代码
美中不足的是,如果参数不带空格,会被截掉最右边的一个字符。(注意:set DelR=后面和DelR=%%DelR%%%%i后面都带有一个空格)
[ 本帖最后由 tz_being 于 2009-11-15 21:20 编辑 ]
作者: Taurus 时间: 2009-11-15 20:55
抱歉,不太理解你想得出甚麽结果,因为看了帖子两个代码的结果有分别:
@echo off
call :delright "kk "
echo "%DelR%"
pause
:delright
set DelR=
for %%i in (%~1) do call,set DelR=%%DelR%%%%i
set DelR=%DelR:~1,-1%
goto :eof
call :delright "kk "
echo "%DelR%"
pause
:delright
set "DelR=%~1"
:delright2
if "%DelR:~-1%"==" " set DelR=%DelR:~0,-1%&&goto delright2
goto :eof
是要得出甚么结果?能否举例?
"12 34"
"1234 "
" 1234"
"1 23 4"
作者: tz_being 时间: 2009-11-15 21:08
原帖由 Taurus 于 2009-11-15 20:55 发表
是要得出甚么结果?能否举例?
如果需处理的参数是“12 3 ”,我希望的结果是“12 3”;
如果需处理的参数是“ ”,我希望的结果是“”
DeLeTe朋友的代码,set DelR=后面和DelR=%%DelR%%%%i后面都带有一个空格
[ 本帖最后由 tz_being 于 2009-11-15 21:23 编辑 ]
作者: Taurus 时间: 2009-11-15 21:24 标题: 回复 7楼 的帖子
這樣?
(在你原碼加了一行,不肯定是否你要的結果...)
call :delright " kk kk kk kk "
echo "%DelR%"
pause
:delright
set "DelR=%~1"
:delright2
if "%DelR:~0%"==" " set DelR=&goto :eof
if "%DelR:~-1%"==" " set DelR=%DelR:~0,-1%&&goto delright2
goto :eof
[ 本帖最后由 Taurus 于 2009-11-15 21:27 编辑 ]
作者: tz_being 时间: 2009-11-15 21:38
感谢Taurus朋友,完美解决!
作者: Taurus 时间: 2009-11-15 21:42 标题: 回复 9楼 的帖子
客氣了.......
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |