Board logo

标题: 如何去除文本中所有空格和空行(已解) [打印本页]

作者: bat-zw     时间: 2008-3-31 23:32    标题: 如何去除文本中所有空格和空行(已解)

===============================================
提示:********解决方案见三楼********
有a.txt,内容如下:
  a d b d e jf ;k  jdpopfd fkdlk ;            


fksffjkla            jsklfjkla j                ksaljfkl jklsaj    
 
ff f fff  ffff ff ffff  fff                cccc cccccc ccc ccccccc

  ddddd dq dqd fdkfjdk fjdskljg k;         

======= ^^^^^****&&&&&&& ~!@#$%^&*(()  : =   







gjfdgkjk 'g          
要通过批处理生成b.txt,内容如下:
adbdejf;kjdpopfdfkdlk;            
fksffjklajsklfjklajksaljfkljklsaj    
fffffffffffffffffffcccccccccccccccccccc
ddddddqdqdfdkfjdkfjdskljgk;         
======= ^^^^^****&&&&&&&~!@#$%^&*(():=   
gjfdgkjk 'g
我写了段代码,仅能处理到如下程度,望高人支招啊。
@echo off
if exist b.txt del b.txt
for /f "delims=" %%i in ('findstr .* a.txt') do (
    set var=%%i
  setlocal enabledelayedexpansion
    if not "!var!"=="!var: =!" echo !var: =! >>b.txt
    endlocal
)
start b.txt

  adbdejf;kjdpopfdfkdlk;              
fksffjklajsklfjklajksaljfkljklsaj      
ff f fff  ffff ff ffff  fffcccc cccccc ccc ccccccc  
  ddddddqdqdfdkfjdkfjdskljgk;           
=======^^^^^****&&&&&&&~!@#$%^&*(()  :=     
gjfdgkjk'g            
[ Last edited by zw19750516 on 2008-4-1 at 12:20 AM ]
作者: abcd     时间: 2008-3-31 23:48
======= ^^^^^****&&&&&&&~!@#$%^&*(():=   
gjfdgkjk 'g

不需要去掉吗?
作者: 26933062     时间: 2008-3-31 23:53
:
@echo off
for /f "delims=" %%a in (a.txt) do (
   set var=%%a
   setlocal enabledelayedexpansion
   set var=!var: =!
   if not "!var!"=="" set var=!var: =!
   if not "!var!"=="" echo !var!
   endlocal
)
pause

作者: bat-zw     时间: 2008-3-31 23:55    标题: 看来都是汉字输入法的错!!!

如果是纯英名下生成的a.txt,我的代码应该是没问题的(测试了)。
但如果空格是汉字输入状态下生成的就挂了,是不是处理不了啊。
作者: bat-zw     时间: 2008-4-1 00:03


  Quote:
Originally posted by 26933062 at 2008-3-31 23:53:
@echo off
for /f "delims=" %%a in (a.txt) do (
   set var=%%a
   setlocal enabledelayedexpansion
   set var=!var: =!
   if not "!var!"=="" set var=!var:  ...

是不是应该改为
@echo off
for /f "delims=" %%a in (a.txt) do (
   set var=%%a
   setlocal enabledelayedexpansion
   set var=!var: =!
   if not "!var!"=="" set var=!var: =!
   echo.!var! >>b.txt
   endlocal   
)
但即使这样处理的结果仍有个空行在如下:
adbdejf;kjdpopfdfkdlk;
fksffjklajsklfjklajksaljfkljklsaj

fffffffffffffffffffcccccccccccccccccccc
ddddddqdqdfdkfjdkfjdskljgk;
=======^^^^^****&&&&&&&~!@#$%^&*(():=
gjfdgkjk'g

作者: 26933062     时间: 2008-4-1 00:04
3楼代码可以处理全角空格啊!
作者: bat-zw     时间: 2008-4-1 00:18


  Quote:
Originally posted by 26933062 at 2008-4-1 00:04:
3楼代码可以处理全角空格啊!

测试成功,高人,自愧弗如啊!