如何删除每行行尾的硬回车
1、解决思路:先确定一个正常断行的最大长度,比如标题行等,本例是30个字符。长度超过30字符的段落才可能是多余的换行,只要看一下最后一个字符是不是段落尾会有字符就行了。本例只列出三个:句号,叹号,问号,根据文档特征,还可以加上右引号,右括号,省略号等。Sub测试()Constml&=30'最大长度Constle$="。?!"'行尾字符Dimarr,all$,i&,newdocAsDocumentarr=Split(ActiveDocument.Range,Chr(13))Fori=0ToUBound(arr)IfLen(arr(i))>mlThenall=all&arr(i)IfInStr(le,Right$(arr(i),1))Thenall=all&Chr(13)ElseIfLen(Trim(arr(i)))Thenall=all&arr(i)&Chr(13)EndIfNextSetnewdoc=Documents.Addnewdoc.Range.ParagraphFormat.CharacterUnitFirstLineIndent=2newdoc.Range=allEndSub解决问题的关键是理清思路,写完上面的代码,测试成功之后,就猜到用查找替换就可轻松实现。解决办法:1.使用通配符→查找→([!^13]{30}*[!。!?])^13→替换为→→全部替换。2.再手动缩进一下就ok了。此方法实际操作了一下,感觉一是似乎不能一次删除所有行尾硬回车,要反复多次重复上面的操作才能删完;二是替换完了以后得重排段落,还好能很容易找到那些应该分段的地方(有多个空格)。所以看起来此方法还需完善,但此方法技术含量高,有可能是能最有效的解决问题的方法,因此期待有高人按此思路提供更好的方法。
2、首先在每一段正确的段尾都加上文章中没有的标记,如“&&&&”。然后打开“查找和替换”对话框,把光标插入“查找内容”框,逐一点击“高级→特殊字符→段落标记”,再把光标插入“替换为”框中,依次点击“特殊字符→不间断空格”,“^s”出现在“替换为”框中,接着按“全部替换”,所有硬回车都没有了。随后,再打开“查找和替换”对话框,在“查找内容”框键入“&&&&”,再把光标插入“替换为”框,点击“特殊字符→段落标记”,最后按“全部替换”,至此文章就整理完毕了。