[DotNet] Remplacer les caractères accentués et les caractères non imprimables
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 🙂