Ordinare una lista suona come il problema più risolto in informatica, fino a quando il risultato non torna con file10 sopra file2, ogni nome in maiuscolo raggruppato in alto, $5 bloccato in fondo a un listino prezzi, e & quot; Apple" e & quot; apple" contato come due voci diverse Ognuno di questi è il tipo che fa esattamente quello che gli è stato detto Il problema è che & quot; ordine alfabetico" nasconde diverse regole diverse, e scegliere quella sbagliata produce una lista tecnicamente ordinata e praticamente inutile.
Questa guida spiega le regole di ordinamento che contano per gli elenchi di tutti i giorni: ordine dei byte, ordine alfabetico compatibile con le impostazioni locali, ordine naturale per i numeri incorporati, ordine numerico reale e ordine di lunghezza Copre anche il modo in cui i passaggi di pulizia come il taglio e la rimozione dei duplicati interagiscono con l'ordinamento Gli esempi lavorati utilizzano il Smistatore linea Toolz, e ogni output mostrato è ciò che produce il suo codice.
tl; dr: Per ordinare le righe di testo, incolla un elemento per riga e scegli una modalità Alfabetico nel Toolz Line Sorter è compatibile con le impostazioni locali e naturale, quindi
item2viene primaitem10, e Ignora caso (di default) mantiene & quot; Apple" e & quot; apple" insieme Ordini in modalità numerica dal numero all'inizio di ogni riga e affonda le linee non numeriche verso il basso Ordini in modalità lunghezza dal numero di caratteri La pulizia viene eseguita prima dell'ordinamento: taglia gli spazi bianchi, rilascia le linee vuote, quindi rimuovi i duplicati mantenendo la prima occorrenza Il selezionatrice online di linee è lato client, gratuito, nessuna registrazione e aggiornamenti durante la digitazione.
Cosa fa un selezionatore di linea?
Un selezionatore di riga prende un blocco di testo, tratta ogni riga come un elemento e riorganizza le righe in base a una regola scelta Lo stesso strumento di solito pulisce l'elenco contemporaneamente: ritagliare gli spazi vaganti, rimuovere le righe vuote e rimuovere i duplicati.
La versione Toolz offre cinque modalità e quattro opzioni di pulizia:
| Impostazione | Quello che fa | Default |
|---|---|---|
| Dalla A alla Z | Ordine alfabetico compatibile con il luogo con gestione naturale dei numeri | Selezionato |
| numerico | Ordini in base al numero con cui inizia ogni riga | |
| Lunghezza | Ordini per numero di caratteri, il più breve prima | |
| Inversione | Ribalta l'ordine corrente della linea senza ordinare | |
| Mescola | Ordine casuale; fare nuovamente clic per rimescolare | |
| Discendente | Capovolge il risultato di A a Z, Numerico o Lunghezza | Fuori |
| Rimuovi righe vuote | Rilascia le righe vuote o solo gli spazi bianchi | Su |
| Rimuovi duplicati | Mantiene la prima occorrenza di ogni riga | Fuori |
| Taglia gli spazi bianchi | Rimuove gli spazi e le schede su entrambe le estremità di ciascuna linea | Fuori |
| Ignora caso | Confronta le linee come minuscole per l'ordinamento e i duplicati | Su |
Il pannello di output mostra quante linee sono uscite e quante sono state rimosse, in modo da poter vedere l'effetto delle opzioni di pulizia a colpo d'occhio.
Perché il file10 viene prima del file2?
Perché un ordinamento in testo semplice confronta le stringhe un carattere alla volta, da sinistra. file10 e file2 abbina per quattro personaggi, quindi il quinto personaggio è 1 in uno e 2 nell'altro Il personaggio 1 Ordina prima 2, così file10 vince e il confronto non esamina mai il fatto che 10 è un numero maggiore di 2.
L'ordinamento naturale risolve questo problema leggendo ogni serie di cifre come numero. La linea Toolz sorter's dalla modalità dalla A alla Z lo fa, utilizzando il browser's la raccolta integrata con confronto numerico attivato, l'opzione descritta per String.prototype.localeConfronta su MDN. Le regole di ordinamento sottostanti provengono dal Algoritmo di collazionamento Unicode, che è il modo in cui i browser decidono che & quot;é" ordina vicino a & quot; e" piuttosto che dopo & quot; z".
Ecco lo stesso elenco di cinque voci sotto tre regole:
| Ingresso | Ordine dei byte (LC_ALL=C sort) |
Ordine dei caratteri, custodia piegata | Ordine naturale (Toolz dalla A alla Z) |
|---|---|---|---|
item10 |
Item1 |
Item1 |
Item1 |
item2 |
item10 |
item10 |
item2 |
Item1 |
item2 |
item2 |
item3 |
item3 |
item3 |
item3 |
item10 |
zebra |
zebra |
zebra |
zebra |
L'ordine dei byte mette Item1 prima solo perché un maiuscolo I ha un codice inferiore rispetto a qualsiasi lettera minuscola L'ordine dei caratteri con la piegatura del case fissa il maiuscolo, ma mette comunque item10 prima item2. L'ordine naturale fa bene a entrambi.
In che modo il caso influisce sull'ordinamento alfabetico?
Nell'ordine dei byte grezzi ogni lettera maiuscola ordina prima di ogni lettera minuscola, quindi un elenco di nomi può essere suddiviso in due esecuzioni alfabetiche: prima tutte le voci maiuscole, poi tutte quelle minuscole. L'ordinamento locale non lo fa; tratta prima le lettere come la stessa lettera e utilizza il caso solo per rompere i legami.
L'opzione Ignora caso fa un ulteriore passo avanti e confronta tutto come minuscolo Quando due righe differiscono solo per caso, si confrontano come uguali e l'ordinamento le mantiene nell'ordine in cui sono apparse nell'input Ciò è importante per i duplicati, trattati di seguito.
Esempio funzionante con il campione incorporato
Fai clic su & quot;Carica sample" e l'input è di dieci righe: banana, Apple, cherry, apple, 10, 2, Banana, date, una riga vuota e grape.
| Impostazioni | uscita | Conteggio mostrato |
|---|---|---|
| Predefiniti: dalla A alla Z, ignorare il caso attivo, rimuovere le righe vuote attive | 2, 10, Apple, apple, banana, Banana, cherry, date, grape |
9 linee, 1 rimossa |
| Aggiungi Rimuovi duplicati | 2, 10, Apple, banana, cherry, date, grape |
7 linee, 3 rimosse |
| Rimuovi i duplicati, ignora il caso disattivato | 2, 10, apple, Apple, banana, Banana, cherry, date, grape |
9 linee, 1 rimossa |
| Default più Discendente | grape, date, cherry, Banana, banana, apple, Apple, 10, 2 |
9 linee, 1 rimossa |
In quella tabella sono visibili tre dettagli I numeri vengono prima delle lettere in modalità alfabetica, e 2 precedenze 10 a causa dell'ordinamento naturale Con il caso Ignora su, Apple resta davanti a apple perché è apparso per primo nell'input Con il caso Ignore disattivato, la collazione browser's colloca la forma minuscola appena davanti a quella maiuscola, che è il comportamento abituale nei browser in lingua inglese, e nessuna delle righe conta come duplicato perché non sono identiche. Discendere è un'inversione completa del risultato ascendente, quindi anche le linee legate si capovolgono.
Ordinamento alfabetico vs numerico: quando si devono usare ciascuno?
Usa la modalità alfabetica (naturale) per il testo che contiene numeri, come nomi di file, etichette di versione o indirizzi stradali Usa la modalità numerica quando ogni riga è un numero, o inizia con uno, e vuoi che le righe siano ordinate per valore.
La modalità numerica legge il numero all'inizio di ogni riga nel modo JavaScript's parseFloat fa. Salta gli spazi iniziali, legge un segno opzionale, cifre, un punto decimale e un esponente e si ferma al primo carattere che non può continuare un numero Le linee che non iniziano con un numero vanno in basso e mantengono il loro ordine originale.
| Linea | Valore utilizzato | Nota |
|---|---|---|
42 |
42 | |
-7.5 |
-7.5 | I valori negativi e decimali funzionano |
1e3 |
1000 | Si legge la notazione scientifica |
12 apples |
12 | Testo dopo che il numero è ignorato |
1,000 |
1 | La lettura si ferma alla virgola |
$5 |
non un numero | Affonda sul fondo |
v2 |
non un numero | Affonda sul fondo |
Ordinamento $5, 42, 1,000, -7.5, 12 apples, 1e3 in modalità numerica si ottiene:
-7.5
1,000
12 apples
42
1e3
$5
In quell'output ci sono due trappole. 1,000 ordinato come 1, perché migliaia di separatori terminano il numero. Stripparli prima con trovare e sostituire se i tuoi dati li utilizzano. e $5 caduto in fondo; rimuovere i simboli di valuta prima di ordinare i prezzi.
La discesa in modalità numerica inverte l'intero risultato, il che significa che le linee non numeriche si spostano dal basso verso l'alto Se si vogliono solo i numeri in ordine decrescente, pulire prima le linee non numeriche.
Come funziona l'ordinamento per lunghezza?
La modalità Lunghezza ordina le righe in base al numero di caratteri che contengono, prima il più breve o prima il più lungo con Discendente Le righe di uguale lunghezza mantengono il loro ordine di input.
Il conteggio è la lunghezza della stringa JavaScript, che conta le unità di codice UTF-16 Per lettere ordinarie, cifre e caratteri latini accentati che equivalgono al numero di caratteri visibili: café è 4. La maggior parte delle emoji e alcuni caratteri rari utilizzano due unità di codice, quindi ok👍 conta come 4, non 3. per elenchi di parole, nomi o URL questo raramente conta.
L'ordinamento della lunghezza è utile per individuare i valori anomali: il titolo del prodotto insolitamente lungo, la voce troncata o le parole chiave più brevi in un elenco.
In che ordine avviene la pulizia e lo smistamento?
I passaggi vengono eseguiti sempre in una sequenza fissa e l'ordine spiega i risultati più sorprendenti:
- fesso l'input in linee, accettando sia le terminazioni di linea Unix che Windows.
- guarnire ogni riga, se Trim whitespace è attiva.
- Rimuovi righe vuote, se attivo. Una riga contenente solo spazi conta come vuota, anche con Trim off.
- Rimuovi duplicati, se su. La prima occorrenza è mantenuta Con Ignora caso su, le linee che differiscono solo per caso contano come duplicati e l'involucro della prima sopravvive.
- Ordina, inverti o mescola cosa è rimasto.
Perché il taglio è facoltativo e disattivato per impostazione predefinita apple e apple (con uno spazio finale) sono due linee diverse quando vengono confrontati i duplicati, a meno che non si attivi Trim. Questo è il motivo più comune per cui un & quot; rimuovi duplicati& quot; il passaggio sembra perdere le voci Le schede incollate da un foglio di calcolo causano lo stesso effetto.
Per lavori duplicati più pesanti, come mantenere l'ultima occorrenza o confrontare solo una parte di ciascuna riga, il guida per lo sminamento della linea duplicata copre le opzioni in modo più approfondito.
Inverso vs Discendente: qual è la differenza?
Inverso capovolge l'ordine corrente delle linee senza ordinare nulla. c, a, b diventa b, a, c. Discendere ordina prima e poi gira, quindi c, a, b in A alla Z con Discendente diventa c, b, a.
Usare Reverse quando l'ordine originale significa qualcosa, come ad esempio un file di registro con le voci più vecchie per prima cosa, e si desidera prima il più recente Usare Descending quando si desidera un elenco ordinato da Z a A o dal più grande al più piccolo Il pulsante Descending è disabilitato nelle modalità Reverse e Shuffle perché non ha nulla da capovolgere.
Lo shuffle è abbastanza casuale?
Lo shuffle utilizza l'algoritmo Fisher-Yates, che dà a ogni ordine possibile la stessa possibilità quando i suoi numeri casuali sono uniformi, e trae quei numeri dal browser's Math.random(). Va bene per randomizzare una lista di lettura, una playlist o un ordine di presentazione Non è una fonte casuale crittografica, quindi è la scelta sbagliata per qualsiasi cosa in cui qualcuno potrebbe avere un motivo per prevedere o contestare il risultato, come un'estrazione a premi Per quelli, un'estrazione dedicata elenco randomizzatore è la soluzione migliore Fai nuovamente clic su Shuffle per ottenere un nuovo ordine.
È sicuro ordinare online le liste sensibili?
Con questo strumento, sì. L'ordinamento e la pulizia avvengono lato client, in JavaScript nella scheda del browser Il testo non viene caricato o memorizzato e lo strumento continua a funzionare con la rete spenta una volta caricata la pagina Elenchi di indirizzi e-mail, nomi di clienti o nomi host interni non lasciano mai la macchina.
Il limite di dimensione pratica è il tuo browser's memoria piuttosto che un cap server Decine di migliaia di linee ordinate istantaneamente su un tipico computer portatile File molto grandi, nelle centinaia di megabyte, sono gestiti meglio sulla riga di comando.
Quali sono gli errori comuni di ordinamento delle linee?
| Riassortimento | Causa | Fix |
|---|---|---|
file10 sopra file2 in un altro strumento |
Confronto di caratteri semplici | Usa l'ordinamento naturale (dalla A alla Z qui) o sort -V |
| Voci in maiuscolo tutte in alto | Ordinamento byte | Utilizzare un ordinamento compatibile con le impostazioni locali o un caso Ignora |
| Duplicati non rimossi | Gli spazi finali o le schede differiscono | Attivare Trim whitespace |
| & quot;Apple" e & quot;apple" entrambi tenuti | Ignora il caso è disattivato | Attivare Ignora caso |
1,000 ordinato come 1 |
Migliaia di separatore termina il numero | Rimuovere le virgole prima dell'ordinamento numerico |
Prezzi con $ in fondo |
Linea non inizia con un numero | Prima striscia i simboli della valuta |
| L'elenco numerico discendente inizia con le parole | Le linee non numeriche sono invertite verso l'alto | Rimuovere prima le righe non numeriche |
| L'output ha un & quot; rimosso& quot; in più del previsto | Una nuova riga finale ha creato un'ultima riga vuota | Previsto; la linea vuota è stata abbandonata |
Alternative a un selezionatore di linea online
| strumento | Come ordinare | banconote |
|---|---|---|
GNU sort |
sort -f (caso pieghevole), sort -n (numerico), sort -V (naturale), sort -u (unico), sort -r (inverso) |
Scriptable, gestisce file enormi; vedere il Manuale di ordinamento GNU |
shuf |
shuf list.txt |
Ordine casuale sulla riga di comando |
| Ordina per lunghezza in un guscio | awk '{ print length, $0 }' list.txt | sort -n | cut -d' ' -f2- |
Conta byte o caratteri a seconda della località |
| Foglio di calcolo | Incolla in una colonna, Dati, Ordina | Buono quando le linee hanno più campi |
| Editor di codici | & quot; Ordina linee& quot; comandi in molti editor | Il comportamento varia in base all'editor |
| Smistatore linea Toolz | Incolla, fai clic su una modalità | Anteprima dal vivo, pulizia in un unico passaggio, lato client |
Nota che sort l'output dipende dal LC_ALL oppure LANG impostazione locale, per questo lo stesso comando può dare ordini diversi su due macchine Impostazione LC_ALL=C ordine dei byte delle forze.
Ordinamento di una lista, passo dopo passo
- Apri il selezionatrice riga di testo e incolla la tua lista, un elemento per riga.
- Scegli dalla A alla Z per parole e nomi di file, Numerico per numeri o Lunghezza per il conteggio dei caratteri.
- Attivare Trim whitespace se l'elenco è stato incollato da un documento o da un foglio di calcolo.
- Attiva Rimuovi duplicati se desideri ogni voce una volta; lascia Ignora case attivo per unire diverse maiuscole.
- Controlla il conteggio degli output e il & quot; rimosso& quot; numero.
- Fare clic su Copia.
Se anche la lista necessita di una sua capitalizzazione normalizzata, il guida convertitore case spiega titolo, frase e altri casi, e il hub degli strumenti di testo raccoglie il resto delle utilità di testo in un unico posto.



