Question:
What is an easy way to delete accents from a string in CSharp ?How to remove diacritic marks from characters in CSharp ?
How to remove accent marks from a string?
How to transform a string containing accents into a string without accents? (Each accented letter is transformed into its accent-less equivalent)
Answer:
To resume: how to get rid of àáâãäçèéêëìíîïñòóôõöùúûüýÿÀÁÂÃÄÇÈÉÊËÌÍÎÏÑÒÓÔÕÖÙÚÛÜÝ ???The easiest way is to use the string.Normalize method and then filter out all non-spacing marks.
Here is an extension method.
public static string RemoveDiacritics(this string input) { string result = ""; if (!string.IsNullOrEmpty(input)) { input = input.Normalize(NormalizationForm.FormD); StringBuilder sb = new StringBuilder(); for (int i= 0; i < input.Length; i ++) { if (CharUnicodeInfo.GetUnicodeCategory(input[i]) != UnicodeCategory.NonSpacingMark) { sb.Append(input[i]); } } result = sb.ToString(); } return result; }An even shorter version
string normalized = cInput.Normalise(NormalizationForm.FormD); IEnumerable<char> selected = normalized.Where(c => char.GetUnicodeCategory(c) != UnicodeCategory.NonSpacingMark); string result = new String(selected.ToArray());
happy programming ...
No comments:
Post a Comment