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);