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!
c# linq normalize unicodecategory
Commentami!