标题: [文本处理] 如何用命令处理某行后面或前面的空格! [打印本页]
作者: jellyhk 时间: 2008-11-14 10:15 标题: 如何用命令处理某行后面或前面的空格!
例如有个文本a.txt里有内容!
hello[ ]
i
love[ ]
bbs[ ][ ]
[ ]bathome[ ]
.cn
-------------------------
注意!因为空格不好表现我就用[]代表空格!就一个空格!
-------------------------
如何把他搞成下面几种情况!
1:只把hello后的去掉其他不用
2:只把第3行love后的去掉其他不用
3:只去掉地4行bbs后的2个
4:只去掉第5行后面的
5:只去掉第5行前面的
6:全部去掉空格
=======================
好像情况完了样!如果有多的情况谢谢帮忙说出来下!
[ 本帖最后由 jellyhk 于 2008-11-15 00:37 编辑 ]
作者: jellykid 时间: 2008-11-14 11:31
我知道
%os:~1,1%
是说变量的第一个字符开始数后面的第一个字符
怎么没见过
%a: =%
作者: batman 时间: 2008-11-14 11:49
请问楼上如果要处理的这一行内容如下,该怎么办:
“此行中 中间 也有空 格, 有 英文空格 也有 中文空格 后面还有空格。 ”
作者: jellykid 时间: 2008-11-14 12:16
5楼说的对啊!
你的代码是把文本中的全部都替换????
作者: namejm 时间: 2008-11-14 12:47
请把这个文本中所有的数据格式都说一下才好写代码。最起码,应该说明:行首、行中是否还有空格?标题只能描述问题的大概,解决问题需要交代细节,永远都不要“如题”!此乃提问之大忌!
作者: Batcher 时间: 2008-11-14 19:54 标题: 回复 8楼 的帖子
你的测试结果如何呢?符合楼主要求么?
作者: batman 时间: 2008-11-14 20:23
这是一个最保险的方案,但效率上会有点问题:- @echo off
- for /f "delims=" %%i in (a.txt) do (
- set "str=%%i"&call :lp
- call,echo 首%%str%%尾
- )
- pause>nul&goto :eof
- :lp
- if "%str:~-1%" equ " " set /a n+=1
- if "%str:~-1%" equ " " set /a n+=1
- if "%n%" gtr "0" (
- set "str=%str:~,-1%"
- set /a n=0&goto lp
- )
- set /a n=0
复制代码
作者: jellyhk 时间: 2008-11-15 00:22 标题: 10楼!
10楼的代码运行结果:
只是把内容的前后加了
首 尾
没有去掉空格!不知道怎么会事!
我重写了主题内容!
请大家看看 !
帮忙谢谢代码!
[ 本帖最后由 jellyhk 于 2008-11-15 00:34 编辑 ]
作者: pusofalse 时间: 2008-11-15 04:37
为何不一次说清楚?、、、- @echo off & setlocal enabledelayedexpansion
- call :recur a.txt
- pause>nul & exit /b
-
- :recur
- set "string="
- For /f "tokens=*" %%a in (%1) do (
- set "str=%%~a"
- call :reserve
- If "%~1" equ "a.txt" (call :recur "!string!"
- ) else (
- echo !string!&set "string="
- ))
- Exit /b
- :reserve
- if defined str set "string=%str:~,1%%string%" &set "str=%str:~1%"&goto reserve
复制代码
作者: batman 时间: 2008-11-15 10:16
原帖由 jellyhk 于 2008-11-15 00:22 发表
10楼的代码运行结果:
只是把内容的前后加了
首 尾
没有去掉空格!不知道怎么会事!
我重写了主题内容!
请大家看看 !
帮忙谢谢代码!
请问楼主怎么能判断后面的空格被去掉了?用眼睛直接是看不出来的吧,所以我加了首尾两个字符。
同时请楼主以后发贴将问题一次性描述清楚,或另有问题就再发新贴求助。
作者: jellyhk 时间: 2008-11-16 06:34
10 ;12楼2位的代码测试了边只是显示在cmd上的,如何加输出命令?
我在echo 后加 了 结果只输出了.cn
作者: pusofalse 时间: 2008-11-16 07:53
你在echo 后加了什么?不可见的字符需要用“”括起来。
显示在CMD中,不是输出吗、、、如果还要把内容输出到文件中,那么你在顶楼说了这个要求吗、、、或者,没有想要的答案?自己看着改就是了,如果你不想停留在现在的程度的话。
作者: jellyhk 时间: 2008-11-17 01:28 标题: 回复15楼!
不是不想自己改!
是改不了!
很多都不是很懂
1: set "str=%%~a"
中的%%~a就是变量%%a吧
2: if defined str set "string=%str:~,1%%string%" &set "str=%str:~1%"&goto reserve
是什么意思!
3: 输出到是搞半天找对了!是在call :recur a.txt 后面加了个输出管道,对吗?
欢迎光临 批处理之家 (http://bbs.bathome.net/) |
Powered by Discuz! 7.2 |