Comparación de strings sin acento

12/10/2007 - 20:21 por Adrián E. Córdoba | Informe spam
Hola!
Necesito alguna manera de comparar dos strings de tal manera que, aunque los
dos estén acentuadas diferentes, la comparación me dé 'igual' ó '0'.
Por ejemplo, si comparo las dos siguientes cadenas:
"Esta es una prúeba de escritura."
"Está es úna prueba dé escritura."
el resultado sea un '0' (cero).
De igual manera me serviría comparar dos chars, y que el resultado me dé '0'
(cero), aunque un char esté acentuado y el otro no, por ejemplo 'e' y 'é'.
(Estoy programando con C# en .NET Framework 2.0.)

Desde ya, muchas gracias.

Adrián E. Córdoba
 

Leer las respuestas

#1 Guillermo guille
14/10/2007 - 15:59 | Informe spam
De un post que respondí en mis foros:
http://foros.elguille.info/Mensajes.aspx?ID3975

Comparar cadenas sin diferenciar mayúsculas ni minúsculas ni acentos:

int ic;
string s1 = "El gato salió";
string s2 = "El gato salio";
string s3 = "el gato SALIÓ";


// Necesita el espacio de nombres
// System.Globalization

CompareInfo comp = CultureInfo.InvariantCulture.CompareInfo;
// También así:
comp = CompareInfo.GetCompareInfo("es-ES");

CompareOptions compOpt = CompareOptions.IgnoreNonSpace |
CompareOptions.IgnoreCase;

Console.WriteLine("Con CompareInfo y CompareOptions: {0}", compOpt);
ic = comp.Compare(s1, s2, compOpt);
Console.WriteLine("{0} {1} {2}", s1, s2, ic);
ic = comp.Compare(s1, s3, compOpt);
Console.WriteLine("{0} {1} {2}", s1, s3, ic);
ic = comp.Compare(s2, s3, compOpt);
Console.WriteLine("{0} {1} {2}", s2, s3, ic);

Nos vemos
Guillermo

Microsoft MVP Visual Basic desde 1997
Tus consultas en los foros del Guille: http://foros.elguille.info/


"Adrián E. Córdoba" wrote in
message news:
Hola!
Necesito alguna manera de comparar dos strings de tal manera que, aunque
los
dos estén acentuadas diferentes, la comparación me dé 'igual' ó '0'.
Por ejemplo, si comparo las dos siguientes cadenas:
"Esta es una prúeba de escritura."
"Está es úna prueba dé escritura."
el resultado sea un '0' (cero).
De igual manera me serviría comparar dos chars, y que el resultado me dé
'0'
(cero), aunque un char esté acentuado y el otro no, por ejemplo 'e' y 'é'.
(Estoy programando con C# en .NET Framework 2.0.)

Desde ya, muchas gracias.

Adrián E. Córdoba

Preguntas similares