lijinshui 发表于 2009-7-25 16:37:16

删除文本中的最后一行空行

下面这段脚本可以解决文本中的空行,我现在遇到在行尾多出来一个空行,比如说文本在"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:34

今天的人气低到脚踝啦,:L :(

lijinshui 发表于 2009-7-28 09:08:52

顶一顶,大家看看啊

nbkhic 发表于 2009-7-28 09:41:55

writeline的时候就会自动换行了。思路不错,正则的作用挺大的!

lijinshui 发表于 2009-7-28 09:48:50

文本中最后一行我也不想要,光标就要停在文本结束的地方 比如说 文本最后一个字符是"3"的话,那么 最后就应该是
"3EOF"
而不是
"3"
EOF

intothestorm 发表于 2009-7-28 10:18:57

try this

pattern = "\n\s*\r|\n\s*$"

[ 本帖最后由 intothestorm 于 2009-7-28 11:21 编辑 ]

lijinshui 发表于 2009-7-28 10:52:45

喂,凶猫,这不会是巴豆吧,:lol开玩笑,我试试

intothestorm 发表于 2009-7-28 11:22:33

你想吃我无限量供应:lol
别试了,之前没环境调试,code有问题,漏了最后一行有空格的可能。
更新了。

lijinshui 发表于 2009-7-28 13:56:26

回复 8# 的帖子

真的更新啦?
可是我在文本最后一行加了几个回车后,打印出来的文本EOF 还是在另一行,并没有跟在文本后面啊:L

intothestorm 发表于 2009-7-28 14:30:30

输入文件我用的txt,更新后的pattern在我自己机器上试过了,完全满足你的需求啊。
你自己再琢磨琢磨,实在不行把你的源文件传上来,我亲自帮你调。:lol

lijinshui 发表于 2009-7-28 15:30:30

你在END 后面添加几个回车,然后保存成文本文件,处理后再另存的文件 光标是停留在"d"后面的吗

#1 aoeu
#2 aoeu
#3 eontuhoetnu
#End

[ 本帖最后由 lijinshui 于 2009-7-28 15:33 编辑 ]

intothestorm 发表于 2009-7-28 15:47:31

fox后面那根竖线就是EOF

lijinshui 发表于 2009-7-28 17:05:10

回复 12# 的帖子

你在"FOX"后面加了几个回车后,不要打印,请用WriteToFile(strFile,str),这样估计就跟你想的不一样喽,刚才,我也用打印的跟你的一样,可是写到文件里面后,光标还是被发配到下一行了:L

intothestorm 发表于 2009-7-30 10:54:46

不管打印还是写文件结果都一样,我就改了你的pattern,其他什么都没改。
难道你不是用的windows系统?

有没有其他的小白鼠做做实验?

lijinshui 发表于 2009-8-20 08:38:50

我贴图了


执行后结果


希望得到的结果


[ 本帖最后由 lijinshui 于 2009-8-20 15:04 编辑 ]

lijinshui 发表于 2009-8-20 08:46:45

图片在压缩文件里面


[ 本帖最后由 lijinshui 于 2009-8-20 08:49 编辑 ]

intothestorm 发表于 2009-8-20 10:58:16

你这个是什么文本编辑器。
从图里看,最后一行只回车了没换行,应该达到你的目的了啊。
那个EOF是不是你编辑器显示的问题,即总是显示在下一行。
你有其他文本文件能显示成“3EOF"这种?

lijinshui 发表于 2009-8-20 11:11:12

是一个开源的文本编辑器,可以显示一些特殊符号,我又重新添加了一个图片,3.BMP就是我想要的结果,2.BMP是实际执行的结果,



[ 本帖最后由 lijinshui 于 2009-8-20 11:13 编辑 ]

lijinshui 发表于 2009-8-20 11:15:02

原帖由 intothestorm 于 2009-8-20 10:58 发表 http://bbs.51testing.com/images/common/back.gif
你这个是什么文本编辑器。
从图里看,最后一行只回车了没换行,应该达到你的目的了啊。
那个EOF是不是你编辑器显示的问题,即总是显示在下一行。
你有其他文本文件能显示成“3EOF"这种?

你说"最后一行只回车了没换行" ,但是在统计行数的时候的确是多了一行的

lijinshui 发表于 2009-8-20 14:14:57

可以了

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
页: [1] 2
查看完整版本: 删除文本中的最后一行空行