Pergunta

Estou pagando países de um Alfabet, então os países iniciam o anúncio, eh etc., mas também quero listar Åbrohw no a e ëpollewop no e. Eu tentei string.startswith fornecendo uma opção StringCompare, mas não funciona ...

Estou correndo sob o código de cultura SV-SE, se isso importa ...

Michel

Foi útil?

Solução

Ver Como removo os diacríticos (sotaques) de uma corda no .NET? Para a solução criar uma versão sem os diacríticos, que você pode usar para as comparações (enquanto ainda exibe a versão com os diacríticos).

Outras dicas

Ah, sim, a cultura é importante. Se você executar o seguinte:

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

... você obtém a seguinte saída:

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

Tente usar a seleção de intervalo em vez de correspondência precisa.

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

Você teria que dar uma cultura específica para classificar ou escrever seu próprio comparador para isso. Ordem de classificação padrão para sueco puts Å, ä, Ö no final.

Provavelmente, você gostaria de decompor letras com diacríticas e classificá -las como se não tivessem uma marca diacrítica.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top