删除文本中的最后一行空行
下面这段脚本可以解决文本中的空行,我现在遇到在行尾多出来一个空行,比如说文本在"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 今天的人气低到脚踝啦,:L :( 顶一顶,大家看看啊 writeline的时候就会自动换行了。思路不错,正则的作用挺大的! 文本中最后一行我也不想要,光标就要停在文本结束的地方 比如说 文本最后一个字符是"3"的话,那么 最后就应该是
"3EOF"
而不是
"3"
EOF
try this
pattern = "\n\s*\r|\n\s*$"[ 本帖最后由 intothestorm 于 2009-7-28 11:21 编辑 ] 喂,凶猫,这不会是巴豆吧,:lol开玩笑,我试试 你想吃我无限量供应:lol
别试了,之前没环境调试,code有问题,漏了最后一行有空格的可能。
更新了。
回复 8# 的帖子
真的更新啦?可是我在文本最后一行加了几个回车后,打印出来的文本EOF 还是在另一行,并没有跟在文本后面啊:L 输入文件我用的txt,更新后的pattern在我自己机器上试过了,完全满足你的需求啊。
你自己再琢磨琢磨,实在不行把你的源文件传上来,我亲自帮你调。:lol 你在END 后面添加几个回车,然后保存成文本文件,处理后再另存的文件 光标是停留在"d"后面的吗
#1 aoeu
#2 aoeu
#3 eontuhoetnu
#End
[ 本帖最后由 lijinshui 于 2009-7-28 15:33 编辑 ] fox后面那根竖线就是EOF
回复 12# 的帖子
你在"FOX"后面加了几个回车后,不要打印,请用WriteToFile(strFile,str),这样估计就跟你想的不一样喽,刚才,我也用打印的跟你的一样,可是写到文件里面后,光标还是被发配到下一行了:L 不管打印还是写文件结果都一样,我就改了你的pattern,其他什么都没改。难道你不是用的windows系统?
有没有其他的小白鼠做做实验? 我贴图了
执行后结果
希望得到的结果
[ 本帖最后由 lijinshui 于 2009-8-20 15:04 编辑 ] 图片在压缩文件里面
[ 本帖最后由 lijinshui 于 2009-8-20 08:49 编辑 ] 你这个是什么文本编辑器。
从图里看,最后一行只回车了没换行,应该达到你的目的了啊。
那个EOF是不是你编辑器显示的问题,即总是显示在下一行。
你有其他文本文件能显示成“3EOF"这种? 是一个开源的文本编辑器,可以显示一些特殊符号,我又重新添加了一个图片,3.BMP就是我想要的结果,2.BMP是实际执行的结果,
[ 本帖最后由 lijinshui 于 2009-8-20 11:13 编辑 ] 原帖由 intothestorm 于 2009-8-20 10:58 发表 http://bbs.51testing.com/images/common/back.gif
你这个是什么文本编辑器。
从图里看,最后一行只回车了没换行,应该达到你的目的了啊。
那个EOF是不是你编辑器显示的问题,即总是显示在下一行。
你有其他文本文件能显示成“3EOF"这种?
你说"最后一行只回车了没换行" ,但是在统计行数的时候的确是多了一行的
可以了
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