【发布时间】:2016-02-03 22:15:50
【问题描述】:
我正在尝试清理 Word 中选定文本的每一行,以便删除任何不需要的字符(制表符、多个空格、多个换行符、空行)。
假设我有一个文本:
John Smith
John Anderson Smith
John A. Smith
J.A. Smith
我想实现以下目标:
John Smith
John Anderson Smith
John A. Smith
J.A. Smith
让我向您展示我到目前为止所做的尝试。删除标签非常简单:
With Selection
.Text = Replace(.Text, vbTab, "")
End With
换行符也是如此:
With Selection
.Text = Replace(.Text, vbCrLf, ",")
End With
不幸的是,当我尝试使用 .Text = Replace(.Text, vbCrLf & vbCrLf, "") 删除两个换行符时,它无法正常工作
我也尝试了以下代码,但它也无法正常工作。
With Selection
Do While InStr(1, .Text, vbCrLf & vbCrLf)
.Text = Replace(.Text, vbCrLf & vbCrLf, vbCrlF)
Loop
End With
我想出了另一段代码。我几乎成功了,即。删除制表符、前导空格和尾随空格以及两个以上的空格。但它也删除了 all 换行符,我只想删除重复的换行符(即多个)。正则表达式 \p{2,} 和 \n 在这里不起作用。删除空行也很棒。
Sub test()
With Selection
Dim RegEx As Object
Set RegEx = CreateObject("VBScript.RegExp")
RegEx.Global = True
RegEx.IgnoreCase = True
RegEx.Pattern = "\s{2,}"
.Text = Trim(RegEx.Replace(.Text, " "))
End With
End Sub
【问题讨论】: