Sostituire le lettere accentate in C# e Linq

Mattepuffo's logo
Sostituire le lettere accentate in C# e Linq

Sostituire le lettere accentate in C# e Linq

In un piccolo programma ho la necessità di sotituire tutte le lettere accentate di un testo con la corrispondente lettera senza accento.

Ho trovato il modo di farlo in C# usando Linq.

Ecco un esempio:

using System;
using System.Globalization;
using System.Linq;
using System.Text;

namespace CSharpTest
{
    class Program
    {
        static void Main(string[] args)
        {
            var testo = "Ciàò còmè stai?";
            testo = testo.Normalize(NormalizationForm.FormD);
            char[] cc = testo
                .Where(c => CharUnicodeInfo.GetUnicodeCategory(c)
                != UnicodeCategory.NonSpacingMark).ToArray();
            var newStr = new String(cc).Normalize(NormalizationForm.FormC);

            Console.WriteLine(testo);
            Console.WriteLine(newStr);
            Console.ReadLine();
        }
    }
}

L'output sarà questo:

Cia'o' co'me' stai?
Ciao come stai?

Enjoy!


Condividi

Commentami!