1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47
|
' Retire les balises RTF à l'intérieur des champs Etiquette
Function EpureField(ByVal Ligne As String) As String
Dim travLigne As String = Ligne
Dim cCharac As Char
Dim nPosition As Int32
Dim nNbOuvertureBaliseRTF As Int16 = 0
Dim nNbFermetureBaliseRTF As Int16 = 0
Dim nStart As Int32 = 1
While InStr(nStart, travLigne, "[") > 0 ' On recherche l'ouverture du 1er champs etiquette
nPosition = InStr(nStart, travLigne, "[")
cCharac = travLigne.Substring(nPosition, 1)
nNbOuvertureBaliseRTF = 0
nNbFermetureBaliseRTF = 0
While cCharac <> "]" ' On ntravaille sur cette portion jusqu'à la fin du champs etiquette
If cCharac = "}" Then ' Fermeture balise RTF
travLigne = travLigne.Remove(nPosition, 1) ' On retire ce caratère
nNbFermetureBaliseRTF = nNbFermetureBaliseRTF + 1 ' On compte le nb d'ouveture/fermeture balise RTF pour savoir s'il faura refermer une balise à la fin
ElseIf cCharac = "{" Then ' Ouverture balise RTF
travLigne = travLigne.Remove(nPosition, 1)
IsRemovingChar = True
nNbOuvertureBaliseRTF = nNbOuvertureBaliseRTF + 1 ' On compte le nb d'ouveture/fermeture balise RTF pour savoir s'il faura refermer une balise à la fin
ElseIf cCharac = " " And IsRemovingChar = True Then ' Fin du Nom de la balise RTF
travLigne = travLigne.Remove(nPosition, 1)
IsRemovingChar = False '=> à partir de la, c'est du texte à garder
ElseIf IsRemovingChar = True Then
travLigne = travLigne.Remove(nPosition, 1) ' si pas de caratère spécial est que l'on est après un "{" => on supprime le caractère
Else
nPosition = nPosition + 1 ' On change de position que si on n'a pas supprimer un caractère => change de position tout seul
End If
cCharac = travLigne.Substring(nPosition, 1) ' Regardons le caractère suivant
End While
If nNbFermetureBaliseRTF > nNbOuvertureBaliseRTF Then
' Il y a certaienemnt une "}" dont l'ouverture était ben dehors de la balise => on repouse la fermeture après notre balise
travLigne = travLigne.Insert(nPosition, "}")
End If
nStart = nPosition
End While
EpureField = Ligne
End Function |
Partager