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

Publié le 03 décembre 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());
}