我需要比较两个格式化的字符串。它们中的两个文本是相同的,只有格式不同,这意味着某些单词是粗体。代码应该告诉我粗体子串的位置是否不同,例如字符串的格式不同。 到目前为止,我尝试了char-to-char方法,但它太慢了。
这是MS Word中一个简单合法的当前文本,每个字符串有10到100个字符。两个人独立地格式化了字符串。
到目前为止我的代码:
Function collectBold(r As Range) As String
Dim chpos As Integer
Dim ch As Variant
Dim str, strTemp As String
chpos = 1
Do
If r.Characters(chpos).Font.Bold Then
Do
Dim boold As Boolean
strTemp = strTemp + r.Characters(chpos)
chpos = chpos + 1
If (chpos < r.Characters.Count) Then boold = r.Characters(chpos).Font.Bold
Loop While (boold And chpos < r.Characters.Count)
str = str + Trim(strTemp) + "/"
strTemp = ""
Else: chpos = chpos + 1
End If
Loop While (chpos < r.Characters.Count)
collectBold = str
End Function
此代码收集所有粗体子串(strTemp)并将它们合并为一个字符串(str),用“/”分隔它们。该函数运行两个字符串进行比较,然后检查输出是否相同。
答案 0 :(得分:3)
如果您只需要查看它们是否不同,此功能将执行此操作:
Function areStringsDifferent(range1 As Range, range2 As Range) As Boolean
Dim i As Integer, j As Integer
For i = 1 To range1.Words.Count
'check if words are different formatted
If Not range1.Words(i).Bold = range2.Words(i).Bold Then
areStringsDifferent = True
Exit Function
'words same formatted, but characters may not be
ElseIf range1.Words(i).Bold = wdUndefined Then
For j = 1 To range1.Words(i).Characters.Count
If Not range1.Words(i).Characters(j).Bold = range2.Words(i).Characters(j).Bold Then
areStringsDifferent = True
Exit Function
End If
Next
End If
Next
areStringsDifferent = False
End Function
首先查看单词是否格式不同...如果格式相同但格式未定,则会查看单词的字符。