我有一个高亮算法,它接受一个字符串并在其中的匹配项周围添加高亮代码。我遇到的问题是将“Find tæst”之类的词作为要搜索的字符串,将“taest”作为要查找的字符串。由于搜索字符串的长度与匹配的长度不匹配,我无法准确找到匹配的结尾。在我的情况下,IndexOf 向我展示了匹配,但由于组合的 æ 被计为一个字符,因此我无法检测到匹配的结束。我不认为 IndexOf 在这里对我有用。返回匹配索引和匹配长度的东西会起作用。但我不知道还能用什么。
' cycle through search words and replace them in the text
For intWord = LBound(m_arrSearchWords) To UBound(m_arrSearchWords)
If m_arrSearchWords(intWord).Length > 0 Then
' replace instances of the word with the word surrounded by bold codes
' find starting position
intPos = strText.IndexOf(m_arrSearchWords(intWord), System.StringComparison.CurrentCultureIgnoreCase)
Do While intPos <> -1
strText = strText.Substring(0, (intPos - 1) - 0 + 1) & cstrHighlightCodeOn & strText.Substring(intPos, m_arrSearchWords(intWord).Length) & cstrHighlightCodeOff & strText.Substring(intPos + m_arrSearchWords(intWord).Length)
intPos = strText.IndexOf(m_arrSearchWords(intWord), intPos + m_arrSearchWords(intWord).Length + cstrHighlightCodeOn.Length + cstrHighlightCodeOff.Length, System.StringComparison.CurrentCultureIgnoreCase)
Loop
End If
Next intWord
Substring 方法失败,因为长度超出了字符串的末尾。我对以搜索词结尾的字符串进行了修复(上面未显示)。但是较长的字符串会错误地突出显示,我需要修复这些。