Sub BuildNewTagString (oldTagS As String, newS As String) As String
Dim inTag As Boolean = False
Dim ioldTagS As Int = 0
Dim inewS As Int = 0
Dim res As StringBuilder : res.Initialize
Dim lenghtChange As Int = Regex.Replace("<.*?>",oldTagS,"").Length - newS.Length
Do While ioldTagS < oldTagS.Length
If oldTagS.CharAt(ioldTagS) = "<" Then
inTag = True
res.Append(oldTagS.CharAt(ioldTagS))
Else
If inTag Then
res.Append(oldTagS.CharAt(ioldTagS))
If oldTagS.CharAt(ioldTagS) = ">" Then inTag = False
Else
If oldTagS.CharAt(ioldTagS) = newS.CharAt(inewS) Then
res.Append(oldTagS.CharAt(ioldTagS))
inewS = inewS +1
Else
Select lenghtChange
Case -1 ' Char have been added
res.Append(newS.CharAt(inewS))
inewS = inewS +1
ioldTagS = ioldTagS -1
Case 0 ' char have been changed
res.Append(newS.CharAt(inewS))
inewS = inewS +1
Case 1 ' char have been removed
End Select
End If
End If
End If
ioldTagS = ioldTagS+1
Loop
Return res.ToString
End Sub