51Testing软件测试论坛

标题: 删除文本中的最后一行空行 [打印本页]

作者: lijinshui    时间: 2009-7-25 16:37
标题: 删除文本中的最后一行空行
下面这段脚本可以解决文本中的空行,我现在遇到在行尾多出来一个空行,比如说文本在"3"这个地方就结束了,可是,光标又挪到下一行了,就停在下一行的行首

srcFile   =   "c:\delLine1.htm"     '需要替换的文本文件   
  desFile   =   "c:\delLine2.htm"     '替换后的文本文件   
  pattern   =   "\n[\s|   ]*\r"             '匹配空行的正则表达式,   包括含有\v\t\f等   
   
  s   =   ReadFile(srcFile)   
  Set   regEx   =   New   RegExp      
  regEx.Pattern   =   pattern   
  regEx.IgnoreCase   =   True     
  regEx.Global   =   True     
         
  s1   =   regEx.replace(s,"")   
  wscript.echo   s1   
   
  call   writeToFile(desFile,s1)   
   
   
  Sub   WriteToFile(strFile,str)   
        Dim   fso,   f   
        Set   fso   =   CreateObject("Scripting.FileSystemObject")   
        Set   f   =   fso.OpenTextFile(strfile,   2,   True)   
        f.Write   str   
        set   f=   nothing   
        set   fso=nothing   
  End   Sub   
   
  Function   ReadFile(strFile)   
        Dim   fso,   f   
        Dim   readFile1   
        Set   fso   =   CreateObject("Scripting.FileSystemObject")   
        Set   f   =   fso.OpenTextFile(strFile,1)   
        ReadFile1   =       f.ReadAll   
        set   f=nothing   
        Set   fso=nothing   
  ReadFile=ReadFile1   
  End   Function
作者: lijinshui    时间: 2009-7-25 17:07
今天的人气低到脚踝啦,
作者: lijinshui    时间: 2009-7-28 09:08
顶一顶,大家看看啊
作者: nbkhic    时间: 2009-7-28 09:41
writeline的时候就会自动换行了。思路不错,正则的作用挺大的!
作者: lijinshui    时间: 2009-7-28 09:48
文本中最后一行我也不想要,光标就要停在文本结束的地方 比如说 文本最后一个字符是"3"的话,那么 最后就应该是
"3EOF"
而不是
"3"
EOF
作者: intothestorm    时间: 2009-7-28 10:18
标题: try this
  1. pattern = "\n\s*\r|\n\s*$"
复制代码

[ 本帖最后由 intothestorm 于 2009-7-28 11:21 编辑 ]
作者: lijinshui    时间: 2009-7-28 10:52
喂,凶猫,这不会是巴豆吧,  开玩笑,我试试
作者: intothestorm    时间: 2009-7-28 11:22
你想吃我无限量供应
别试了,之前没环境调试,code有问题,漏了最后一行有空格的可能。
更新了。
作者: lijinshui    时间: 2009-7-28 13:56
标题: 回复 8# 的帖子
真的更新啦?
可是我在文本最后一行加了几个回车后,打印出来的文本EOF 还是在另一行,并没有跟在文本后面啊
作者: intothestorm    时间: 2009-7-28 14:30
输入文件我用的txt,更新后的pattern在我自己机器上试过了,完全满足你的需求啊。
你自己再琢磨琢磨,实在不行把你的源文件传上来,我亲自帮你调。
作者: lijinshui    时间: 2009-7-28 15:30
你在END 后面添加几个回车,然后保存成文本文件,处理后再另存的文件 光标是停留在"d"后面的吗

#1 aoeu
#2 aoeu
#3 eontuhoetnu
#End

[ 本帖最后由 lijinshui 于 2009-7-28 15:33 编辑 ]
作者: intothestorm    时间: 2009-7-28 15:47
fox后面那根竖线就是EOF

[attach]54485[/attach]
作者: lijinshui    时间: 2009-7-28 17:05
标题: 回复 12# 的帖子
你在"FOX"后面加了几个回车后,不要打印,请用WriteToFile(strFile,str)  ,这样估计就跟你想的不一样喽,刚才,我也用打印的跟你的一样,可是写到文件里面后,光标还是被发配到下一行了
作者: intothestorm    时间: 2009-7-30 10:54
不管打印还是写文件结果都一样,我就改了你的pattern,其他什么都没改。
难道你不是用的windows系统?

有没有其他的小白鼠做做实验?
作者: lijinshui    时间: 2009-8-20 08:38
我贴图了
[attach]55507[/attach]

执行后结果
[attach]55508[/attach]

希望得到的结果
[attach]55509[/attach]

[ 本帖最后由 lijinshui 于 2009-8-20 15:04 编辑 ]
作者: lijinshui    时间: 2009-8-20 08:46
图片在压缩文件里面
[attach]55483[/attach]

[ 本帖最后由 lijinshui 于 2009-8-20 08:49 编辑 ]
作者: intothestorm    时间: 2009-8-20 10:58
你这个是什么文本编辑器。
从图里看,最后一行只回车了没换行,应该达到你的目的了啊。
那个EOF是不是你编辑器显示的问题,即总是显示在下一行。
你有其他文本文件能显示成“3EOF"这种?
作者: lijinshui    时间: 2009-8-20 11:11
是一个开源的文本编辑器,可以显示一些特殊符号,我又重新添加了一个图片,3.BMP就是我想要的结果,2.BMP是实际执行的结果,

[attach]55497[/attach]

[ 本帖最后由 lijinshui 于 2009-8-20 11:13 编辑 ]
作者: lijinshui    时间: 2009-8-20 11:15
原帖由 intothestorm 于 2009-8-20 10:58 发表
你这个是什么文本编辑器。
从图里看,最后一行只回车了没换行,应该达到你的目的了啊。
那个EOF是不是你编辑器显示的问题,即总是显示在下一行。
你有其他文本文件能显示成“3EOF"这种?


你说"最后一行只回车了没换行" ,但是在统计行数的时候的确是多了一行的
作者: lijinshui    时间: 2009-8-20 14:14
标题: 可以了
Call Replace_str()
  Sub   WriteToFile(strFile,str)   
        Dim   fso,   f   
        Set   fso   =   CreateObject("Scripting.FileSystemObject")   
        Set   f   =   fso.OpenTextFile(strfile,   2,   True)   
        f.Write   str   
        set   f=   nothing   
        set   fso=nothing   
  End   Sub   
   
  Function   ReadFile(strFile)   
        Dim   fso,   f   
        Dim   readFile1   
        Set   fso   =   CreateObject("Scripting.FileSystemObject")   
        Set   f   =   fso.OpenTextFile(strFile,1)   
        ReadFile1   =       f.ReadAll   
        set   f=nothing   
        Set   fso=nothing   
  ReadFile=ReadFile1   
  End   Function


Function Replace_str()
'   pattern = "\n\s*\r|\n\s*$"
   pattern = "\n\s*\r|\r\n\s*$"
   Dim FilePath,totalFileName
   Dim content
   FilePath = InputBox("Enter File Path Please!")
    FilePath = FilePath & "\"
   content = InputBox ("Enter Content File Name")

   totalFileName= FilePath & content
Set fso = CreateObject("Scripting.FileSystemObject")

Set MyFilebak=fso.OpenTextFile(totalFileName, 1, false)
Do While MyFilebak.AtEndOfStream <> True
      retstring = MyFilebak.ReadLine
          If retstring <> "" Then
                          TmpPath =  FilePath & retstring
                            s   =   ReadFile(TmpPath)
                                  Set   regEx   =   New   RegExp      
                                        regEx.Pattern   =   pattern   
                                          regEx.IgnoreCase   =   True     
                                          regEx.Global   =   True     
                                          s1   =   regEx.replace(s,"")  
                                          call   writeToFile(TmpPath,s1)   
          End If

   Loop
   MyFilebak.close
End Function
作者: lijinshui    时间: 2009-8-20 14:20
我稍作改动了一些作成一个类似于小工具之类的,只要把要改的文件路经和保存有文件名称的文件名输入后就可以自动修改了

你把test文件解压后放到C盘根目路下后, 根据提示只要输入C:\test  然后是a.TXT

[attach]55506[/attach]




欢迎光临 51Testing软件测试论坛 (http://bbs.51testing.com/) Powered by Discuz! X3.2