所以我的代码已经运行了一段时间。但是,它开始抛出'System.OutOfMemoryException'
异常。失败的那个传递包含大约15-20个链接的文本。该错误专门发生在System.String.ReplaceInternal(String oldValue, String newValue)
所以我知道这个问题,我只是不明白为什么。传入的文本包含15个超链接,但文本少于1000个字符。
Public Shared Function MakeLinksInsideText(pText As String) As String
'regex for hyperlinks
Dim regxLinks As New Regex("http(s)?://([\w+?\.\w+])+([a-zA-Z0-9\~\!\@\#\$\%\^\&\*\(\)_\-\=\+\\\/\?\.\:\;\'\,]*)?", RegexOptions.IgnoreCase)
Dim mactchLinks As MatchCollection = regxLinks.Matches(pText)
Dim strNewText As String = pText
'loop through all found hyperlinks and replace the URL with a a tag
For Each matchLink As Match In mactchLinks
strNewText = strNewText.Replace(matchLink.Value, "<a target='_blank' class='link_orange' href='" & matchLink.Value & "'>" & matchLink.Value & "</a>")
Next
Return strNewText
End Function
答案 0 :(得分:0)
想出来。超链接是一遍又一遍的相同链接。因此,替换函数试图每次在循环中替换该超链接15次。