Bonjour !

J'essaye de faire une fonction de remplacement de caractère qui sera utilisé très souvent ainsi j'essaye de l'optimiser autant que possible, et c'est pourquoi je me tourne vers vous. J'ai 2 algos et je n'arrive pas à déterminer lequel pourrait être le plus performant ... Car c'est variable selon la chaîne à traiter ...

Quel est selon votre logique, le plus performant des 2 ? Auriez-vous une autre idée pour booster encore ? J'avais songé aux regex, mais je suis pas sûr que ce soit plus rapide ...

Merci de votre avis !


Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
 
    Public Shared Function formaterCaractereSpeciaux(ByVal chaineR As String) As String
        Dim i As Integer
 
        Const CS = "ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖÙÚÛÜÝàáâãäåæçèéêëìíîïù"
        Const CN = "AAAAAAACEEEEIIIIDNOOOOOUUUUUaaaaaaaceeeeiiiiu"
        Const CR = "²&~#{([|`_\^@)]°}=+^¨$£¤%µ*,?;:/!§<>"
 
 
        For i = 0 To CN.Length - 1
            chaineR = chaineR.Replace(CS(i), CN(i))
        Next
 
        For i = 0 To CR.Length - 1
            chaineR = chaineR.Replace(CR(i), " ")
        Next
 
 
        Return chaineR
 
    End Function
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
    Public Shared Function formaterCaractereSpeciaux2(ByVal chaineR As String) As String
        Dim i As Integer
 
        Const CS = "ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖÙÚÛÜÝàáâãäåæçèéêëìíîïù"
        Const CN = "AAAAAAACEEEEIIIIDNOOOOOUUUUUaaaaaaaceeeeiiiiu"
        Const CR = "²&~#{([|`_\^@)]°}=+'^¨$£¤%µ*,?;:/!§<>"
 
 
        For i = 0 To CS.Length - 1
            If chaineR.Contains(CS(i)) Then
                chaineR.Replace(CS(i), CN(i))
            End If
        Next
 
        If chaineR.IndexOfAny(CR) <> -1 Then
            For i = 0 To CR.Length - 1
                chaineR = chaineR.Replace(CR(i), " ")
            Next
        End If
 
 
        Return chaineR
 
    End Function