Pregunta

Estoy buscando países en un alfabet, por lo que los países que comienzan A-D, E-H, etc. Pero también quiero enumerar & # 229; brohw en la a, y & # 235; pollewop en la e. Intenté string.startswith proporcionando una opción stringcompare, pero no funciona ...

Me estoy ejecutando bajo el código de cultura sv-SE, si eso importa ...

Michel

¿Fue útil?

Solución

Consulte ¿Cómo elimino los diacríticos ( acentos) de una cadena en .NET? para la solución de crear una versión sin los signos diacríticos, que puede usar para las comparaciones (mientras sigue mostrando la versión con los signos diacríticos).

Otros consejos

Oh sí, la cultura importa. Si ejecuta lo siguiente:

List<string> letters = new List<string>() { "Å", "B", "A" };

Thread.CurrentThread.CurrentCulture = CultureInfo.GetCultureInfo("sv-SE");
letters.Sort();
Console.WriteLine("sv-SE:")
letters.ForEach(s => Console.WriteLine(s));   

Thread.CurrentThread.CurrentCulture = CultureInfo.GetCultureInfo("en-GB");
letters.Sort();
Console.WriteLine("en-GB:")
letters.ForEach(s => Console.WriteLine(s));

... obtienes el siguiente resultado:

sv-SE:
A
B
Å
en-GB:
A
Å
B

Intente usar la selección de rango en lugar de una coincidencia precisa.

A: (firstLetter <= A)
B: (firstLetter > A) AND (firstLetter <= B)
...

Tendría que dar una cultura específica para ordenar o escribir su propio comparador para eso. El orden de clasificación predeterminado para el sueco pone å, ä, ö al final.

Lo más probable es que desee descomponer letras con signos diacríticos y clasificarlas como si no tuvieran una marca diacrítica.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top