[VB/C#] Rendre une String lisible par nos amis américains

Publié le 24 novembre 2008 par Jeremy.jeanson

Voici une méthode simple pour convertir une String en "Lower ACSII" (ASCII 127 caractères, donc sans nos accents).

VB
Public Function ToLowerASCII(ByVal s As String) As String
    Return New String( _
        s.Normalize(System.Text.NormalizationForm.FormD).ToCharArray() _
        .Where(Function(c As Char) System.Globalization.CharUnicodeInfo.GetUnicodeCategory(c) <> System.Globalization.UnicodeCategory.NonSpacingMark) _
        .ToArray())
End Function

C#
public String ToLowerASCII(String s)
{
    return new String(
        s.Normalize(NormalizationForm.FormD).ToCharArray()
        .Where(c => System.Globalization.CharUnicodeInfo.GetUnicodeCategory(c) != System.Globalization.UnicodeCategory.NonSpacingMark)
        .ToArray());
}