[DotNet] Remplacer les caractères accentués et les caractères non imprimables

dotnet special character

La langue française est merveilleuse mais les caractères accentués peuvent vite devenir pénalisant dans le développement d’une application.

En effet, certains logiciels ne supportent pas ou mal l’encodage UTF8, et par conséquent les caractères spéciaux peuvent être mal interprétés.

Je vous propose donc une fonction DotNet qui remplacera les caractères accentués par le caractère équivalent non accentué.

Fonction ReplaceChars en DotNet

'Fonction qui remplace les caractères accentués par le caractere equivalent non accentué
Public Function ReplaceChars(ByVal source As String, ByVal deleteNonPrintableChars As Boolean) As String
    Dim sourceInFormD As String = source.Normalize(NormalizationForm.FormD)
    Dim output As New StringBuilder
    For Each c As Char In sourceInFormD
        Dim uc As UnicodeCategory = CharUnicodeInfo.GetUnicodeCategory(c)
        If uc <> UnicodeCategory.NonSpacingMark Then
            output.Append(c)
        End If
    Next
    Dim ret As String = output.ToString.Normalize(NormalizationForm.FormC)
    If deleteNonPrintableChars Then
        ret = Regex.Replace(ret, "[^\u0000-\u007F]", String.Empty) 'on supprime les non-printable characters
    End If
    Return ret
End Function

Et on peut aller encore plus loin en supprimant également les caractères non imprimables, ce qui peut s’avérer pratique lorsqu’on fait de la sérialisation JSON par exemple.

Voici un exemple d’utilisation de la fonction ReplaceChars:

Dim str as String = "écolier"
Console.Log(ReplaceChars(str, True))

Ce qui affichera “ecolier”.

J’espère que çà vous servira 🙂

Leave a Reply

Your email address will not be published. Required fields are marked *