2013-07-03 8 views
5

Se sto ordinando due stringhe caffè e caffè c'è una buona pratica da seguire su quale lettera viene prima? Ho provato localeCompare in javascript e il caffè viene prima del caffè ma non capisco perché.Quando si ordinano stringhe deve venire prima e e

+0

Questo può essere rilevante: http://stackoverflow.com/questions/6909126/javascript-sort-with-unicode – MatthewMartin

+0

sembra essere il contrario per me -> http: // jsfiddle.net/xvBWa/ – adeneo

risposta

4

La migliore pratica è quella di ordinare prima i segni diacritici, es. il caffè viene prima del caffè.

localeCompare opere nudo i segni diacritici, in modo che il criterio di ordinamento non riflette le parole reali, dal momento caffetteria è trasformato in caffè

Si può leggere di più su localeCompare qui:

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/localeCompare

+0

Non penso di capire quello che stai dicendo. La parte confusa è che l'ordinamento non riflette le parole reali. –

+0

'localeCompare' rimuove i segni diacritici, es. trasforma il caffè in caffetteria - quindi quando lo usi usando, si sta smistando il caffè contro il caffè –

+0

Ho provato questo due modi diversi. Il primo test era ["café", "cafe"] il secondo era ["cafe", "café"]. L'ordine di input non importava che entrambe le volte il caffè uscisse per primo. Se ha spogliato i segni diacritici, l'ordine non dovrebbe essere preservato? –

2

https://en.wikipedia.org/wiki/Collation

Come il testo è ordinato dipende da come è fatto.

Una tradizione è la rappresentazione "US-ASCII" di caratteri, in particolare nel linguaggio di programmazione C. Quando il testo è ordinato secondo ASCII, l'ordine dipende esclusivamente dal valore numerico di ciascun carattere nella specifica ASCII. A volte questo è chiamato locale "C".

Il software moderno dovrebbe, in genere, utilizzare un locale adatto in modo che l'ordine avvenga nel modo previsto dalla gente, indipendentemente dalla rappresentazione numerica dei caratteri utilizzati dal computer.

Vedi anche https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/localeCompare

Problemi correlati