如何从文本文件中删除所有空白行?

如题所述

在Word主菜单“开始”菜单--“编辑”菜单--点击“查找和替换”后弹出对话框

在弹出的对话框中,查找内容处 输入“ ^p^p ”,替换为处输入“ ^p ”,

然后选“全部替换”,弹出小对话框点击确定后,关闭

这种方法可删掉文档中因自动换行符造成的多余空行,但还有一些空行是删不掉的,需要再用下面的其他方法

对于文档中的手动换行符(“Shift+回车”),就要用“ ^l^l ”替换成“ ^l ”(这里用的不是1,而是L字母的小写)或直接用替换对话框里的“特殊字符”,选择里面的“有手动换行符”来进行替换,也可以去掉文档中的一些多余空行。

对于自动和手动换行符交替的情况,可用“ ^p ^l ”替换成“ ^l ”或“ ^l ^p”替换成“ ^l ”也可以去掉文档中的一些多余空行。

8
上述三种方法可以去除文档中的大部分空行,如果还剩有空行,可以再用下面方法试一试
用“^l ^l”(两个换行符之间有一个空格)替换成“^l”,这种方法是用来对付前面有空格的换行符。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2012-10-31
您好,RE。您知道,早在 2002 年,当时的脚本专家们还只是一些默默无闻之辈时,我们就开始编写 Microsoft Windows 2000 Scripting Guide(英文)了。在整理该书时,我们遇到了来自某些人的巨大阻力,这些人认为即使是提到文本文件也是一个错误。为什么会是这样?因为没有人还在使用文本文件,我们在一项过时的技术上浪费时间是有点傻。注意:无论您是否相信,即便该书旨在向人们讲授如何使用 VBScript 编写脚本,可是在将 VBScript 一章加入该书时我们还是遇到了相当大的阻力。但这是另外一回事。所有这一切说明了什么?现在是 2006 年,您好,脚本专家!专栏所要解决的第一个问题就需要用文本文件进行处理。这对于没人使用的过时技术来说还不算坏吧?假定您有一个类似如下的文本文件:Line 1 Line 2 Line 3 而您希望该文本文件看起来是这样:Line 1 Line 2 Line 3 使用脚本能够做到这一点吗?当然可以:Const ForReading = 1 Const ForWriting = 2 Set objFSO = CreateObject("Scripting.FileSystemObject") Set objFile = objFSO.OpenTextFile("C:\Scripts\Test.txt", ForReading) Do Until objFile.AtEndOfStream strLine = objFile.Readline strLine = Trim(strLine) If Len(strLine) > 0 Then strNewContents = strNewContents & strLine & vbCrLf End If Loop objFile.Close Set objFile = objFSO.OpenTextFile("C:\Scripts\Test.txt", ForWriting) objFile.Write strNewContents objFile.Close 在了解脚本工作原理的细枝末节之前,让我们先讲一下基本思想。您可能知道,处理文本文件常常包括如何提出解决方法。今天的脚本也不例外。因为我们不能直接编辑文本文件,所以只能这样:首先,逐行读入文本文件。在读每一行时,检查该行是否为空白行。如果是,将其删除;如果不是,将该行(连同任何其他非空白行)添加到一个名为 strNewContents 的变量中。读完该文件后,将文件关闭,然后立即将其重新打开以进行写入。(使用文本文件的一个与众不同之处是:可以读取文件也可以写入文件,但不能同时读取和写入一个文件。)然后将 strNewContents 的值写入该文件。最终结果为:我们得到了一个没有空白行的文件。您都清楚了吗?好的。现在让我们逐步遍历该脚本。首先定义一对名为 ForReading 和 ForWriting 的常量,我们将用这两个常量来指定打开文本文件时的相应模式。然后使用以下两行代码创建一个 Scripting.FileSystemObject 实例,并打开 C:\Scripts\Test.txt 文件以进行读取:Set objFSO = CreateObject("Scripting.FileSystemObject") Set objFile = objFSO.OpenTextFile("C:\Scripts\Test.txt", ForReading) 接下来我们看下面的代码块:Do Until objFile.AtEndOfStream strLine = objFile.Readline strLine = Trim(strLine) If Len(strLine) > 0 Then strNewContents = strNewContents & strLine & vbCrLf End If Loop 此处我们所做的是逐行(从开头到末尾)读取该文件,好了,到末尾了。(如何知道已经到达文件末尾?答案是当 AtEndOfStream 属性为 True 时。) 在此循环内部,我们使用 ReadLine 方法来读取文本文件的第一行并将其存储在一个名为 strLine 的变量中。然后使用下行代码和 Trim 函数将该行行首和/或行尾的空格删除:strLine = Trim(strLine) 为什么这样做?好吧,假定文件中有许多行是由单个空格构成的。再假定您将它们计为空白行并想将其删除。如果不想删除这些行,则只需将该行代码从脚本中删除:strLine = Trim(strLine) 接下来是下面的代码:If Len(strLine) > 0 Then 现在我们所做的是用 Len 函数确定行中的字符数。如果 Len 大于 0,则该行不是空白行;因此,我们将该行(再加上一个回车换行符)添加到名为 strNewContents 的变量中:strNewContents = strNewContents & strLine & vbCrLf 是的,无论变量 strNewContents 中当前含有什么内容,我们都会将该行添加到其中。这就是我们将 strNewContents 的当前值与变量strLine 及回车换行符(使用 VBScript 常量 vbCrLf)连接在一起的原因。但如果 Len 不大于0 将怎样?如果出现这种情况,则表明该行为空白行,因此我们不会将该行添加到 strNewContents 中。然后进入下一轮循环,对文本文件中的下一行重复此过程。关闭文件 C:\Scripts\Test.txt 后,再将其重新打开(这次进行写入)并调用 Write 方法将 strNewContents 的值写入该文件。为什么会是这样?很简单:因为除空白行外,strNewContents 包括原文本文件中的所有行;我们决不会将空白行添加到 strNewContents 中。那么,我们得到了什么?猜对了:Line 1 Line 2 Line 3 虽然有点麻烦,但正如我们所说,这对于“过时”技术来说还不算坏。本回答被提问者采纳