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!




Share

Commentami!

About Mattepuffo.com

Blog dedicato all'informatica e alla programmazione!
Tutti i contenuti di questo blog, tranne casi particolari, sono sotto licenza Licenza Creative Commons Creative Commons Attribution-Noncommercial-Share Alike 2.5. .

2707 articoli
310 commenti
21 progetti
Altri link
  • About
  • Scrivimi
  • Copyright
  • Sitemap
  • matteo.ferrone@yahoo.it
  • GitHub
  • Privacy Policy