unescape special react escape characters c# string unicode encoding character

react - ¿Cómo reemplazar caracteres especiales con su equivalente(como "á" para "a") en C#?



js html unescape (4)

Podrías probar algo como

var decomposed = "áéö".Normalise(NormalizationForm.FormD); var filtered = decomposed.Where(c => char.GetUnicodeCategory(c) != UnicodeCategory.NonSpacingMark); var newString = new String(filtered.ToArray());

Esto descompone acentos del texto, los filtra y crea una nueva cadena. La combinación de signos diacríticos se encuentra en la categoría Unicode de marca Sin espaciado .

Necesito sacar el contenido de texto portugués de un archivo de Excel y crear un xml que va a ser utilizado por una aplicación que no admite caracteres como "ç", "á", "é", y otros. Y no puedo simplemente eliminar los caracteres, sino reemplazarlos por su equivalente ("c", "a", "e", por ejemplo).

Supongo que hay una mejor manera de hacerlo que verificando cada personaje individualmente y reemplazándolo con sus contrapartes. ¿Alguna sugerencia sobre cómo hacerlo?


string text = {text to replace characters in}; Dictionary<char, char> replacements = new Dictionary<char, char>(); // add your characters to the replacements dictionary, // key: char to replace // value: replacement char replacements.Add(''ç'', ''c''); ... System.Text.StringBuilder replaced = new System.Text.StringBuilder(); for (int i = 0; i < text.Length; i++) { char character = text[i]; if (replacements.ContainsKey(character)) { replaced.Append(replacements[character]); } else { replaced.Append(character); } } // ''replaced'' is now your converted text


Para referencia futura, esto es exactamente con lo que terminé:

temp = stringToConvert.Normalize(NormalizationForm.FormD); IEnumerable<char> filtered = temp; filtered = filtered.Where(c => char.GetUnicodeCategory(c) != System.Globalization.UnicodeCategory.NonSpacingMark); final = new string(filtered.ToArray());


El rendimiento es mejor con esta solución:

string test = "áéíóúç"; string result = Regex.Replace(test .Normalize(NormalizationForm.FormD), "[^A-Za-z| ]", string.empty);