Righe uniche conservando l'ordine
Incolli alpha, beta, alpha, gamma, beta, una per riga, e ottenga alpha, beta, gamma: ogni riga resta dove è comparsa la prima volta e le 2 copie successive spariscono. Nulla viene ordinato. Gratis nel suo browser.
- Gratis
- Funziona nel suo browser
- Senza registrazione
- I suoi dati restano sul dispositivo
Esegui gratis nel browser
Esempio risolto
- Testo
- alpha beta alpha gamma beta
- Testo
- alpha beta gamma
- Righe
- alpha, beta, gamma
- Quantità
- 3
- Originale
- alpha beta alpha gamma beta
Le liste raccolte a mano contengono quasi sempre ripetizioni: uno SKU incollato due volte, una riga di registro che si è riattivata, un nome in classifica copiato più in basso. Il gesto consueto nel foglio di calcolo è ordinare la colonna e cancellare i gemelli adiacenti, il che distrugge in silenzio l'ordine che rendeva utile l'elenco. Conservare righe uniche senza riordinarle è il contratto opposto. Questo strumento legge il testo multilinea dall'alto in basso, tiene la prima comparsa di ciascuna riga nella posizione in cui è apparsa e scarta le copie esatte successive, così una playlist in classifica, un registro delle modifiche o un inventario di prima vista resta nella sequenza che Lei ha già scelto. Può confrontare le righe dopo aver rimosso gli spazi circostanti e conservare comunque la prima grafia originale.
Come le righe uniche tengono l'ordine di prima comparsa invece di ordinare
Preservare l'ordine mentre si rende unica una lista non è la stessa cosa che ordinare e poi cancellare i vicini. Una pipeline ordina-poi-unicizza riscrive la classifica: il primo SKU che Lei ha elencato, il primo errore visto e il primo nome di una playlist saltano alla posizione alfabetica. Chi cerca righe uniche conservando l'ordine vuole il contratto opposto.
Questo motore percorre il file dalla prima riga all'ultima, ricorda ciascuna riga la prima volta che compare, scarta le copie esatte successive e lascia le superstiti in quella sequenza di prima vista. Divide su CR, LF e CRLF così i dump Windows, Unix e vecchio Mac si confrontano in modo equo. Ogni riga è candidata così com'è scritta, inclusa una prima riga vuota se esiste.
L'appartenenza usa per impostazione predefinita una chiave di stringa esatta, quindi contano gli spazi finali e le maiuscole. Quando trim è true, la chiave di appartenenza è la riga senza spazi iniziali né finali, ma il testo conservato resta la prima grafia originale che Lei ha digitato. Non c'è collazione di locale, né distanza di modifica sfocata, né riscrittura dell'ultima occorrenza.
Usi questa pagina quando l'ordine fa parte del significato. Usi uno strumento di ordinamento righe se desidera A–Z. Usi una deduplicazione che ignora le maiuscole quando Apple e apple devono fondersi.
Questa landing è per elenchi unici di prima vista che non devono essere riordinati.
Dove un elenco unico di prima vista merita il proprio posto
Gli sviluppatori che puliscono frammenti di registro e dump della cronologia shell hanno bisogno di un elenco unico di prima occorrenza prima di incollarlo nei ticket, senza mandare l'errore più precoce al centro alfabetico del file. I team di prodotto e merchandising esportano una colonna di SKU in classifica come testo semplice e vogliono valori unici che conservino l'ordine commerciale per il quale hanno già lottato. Editor di playlist, autori di changelog e redattori di programmi comprimono ripetizioni accidentali di copia e incolla lasciando intatta la sequenza prevista.
Gli amministratori di sistema uniscono allowlist da più fonti e necessitano di un insieme unico deterministico che non riordini voci fidate già presenti. I docenti costruiscono elenchi di vocabolario o di chiave di risposta senza ripetizioni accidentali dagli appunti. Se in seguito Le serve un ordinamento alfabetico, un collasso senza maiuscole, una deduplicazione CSV per chiavi di colonna o una fusione semantica sfocata di righe quasi duplicate, li tratti come intenti di ricerca e landing distinti invece di sovraccaricare questa pagina di righe-uniche-conservando-ordine.
Casi d'uso
Tenere uniche le liste in classifica senza riordinarle
Incolli una classifica merchandising, una playlist o una coda di priorità e scarti le copie successive mentre l'ordine di prima vista resta esattamente dove Lei lo ha messo.
Pulire registri e cronologie nell'ordine di prima comparsa
Comprima righe di registro o cronologia shell ripetute così i ticket restano brevi, e tenga la comparsa più precoce in cima invece di ordinare in ordine alfabetico.
Domande frequenti
Come funzionano le righe uniche che conservano l'ordine?
Il motore spezza il testo su CR, LF o CRLF, tiene la prima comparsa di ciascuna riga e scarta le copie successive. Le superstiti restano in ordine di prima vista. Nulla viene ordinato.
In che modo differisce dall'ordinare righe uniche?
Ordinare e poi unicizzare riscrive la classifica in ordine A–Z. Questo strumento non ordina mai: la prima volta che una riga compare è la posizione che conserva. Usi uno strumento di ordinamento righe se desidera un'uscita alfabetica.
Che cosa cambia l'opzione trim?
Quando trim è true, le righe che differiscono solo per spazi iniziali o finali contano come la stessa riga. Il testo conservato resta la prima grafia originale che Lei ha digitato, spazi inclusi.
Che succede se text manca o è vuoto?
Una casella vuota è trattata come errore del client, non come un elenco unico vuoto riuscito.
Apple e apple contano come la stessa riga?
No. Le righe si confrontano in modo esatto, quindi una differenza di maiuscole le rende righe diverse e restano entrambe. Se le maiuscole non devono contare, le uniformi prima.
Strumenti correlati
Per sviluppatori — accesso via API
Tutto quello che vedi in questa pagina è disponibile anche via API. Questa sezione è per i team che vogliono integrarlo nei propri sistemi; chi non ne ha bisogno può semplicemente usare lo strumento qui sopra.
Endpoint
Autenticazione con Bearer token: un POST mette in coda l'attività e il risultato arriva via webhook o link firmato.
Chiamala dal tuo stack
curl -X POST https://api.kit.forhosting.com/str/unique-lines-ordered \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"text":"alpha\nbeta\nalpha\ngamma\nbeta"}'const res = await fetch("https://api.kit.forhosting.com/str/unique-lines-ordered", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"text": "alpha\nbeta\nalpha\ngamma\nbeta"
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/str/unique-lines-ordered",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"text": "alpha\nbeta\nalpha\ngamma\nbeta"
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/str/unique-lines-ordered", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"text":"alpha\\nbeta\\nalpha\\ngamma\\nbeta"}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"text":"alpha\nbeta\nalpha\ngamma\nbeta"}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/str/unique-lines-ordered", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Esempio di richiesta
{
"text": "alpha\nbeta\nalpha\ngamma\nbeta"
}Esempio di risposta
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "str.unique_lines_ordered",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}L'API è asincrona: ricevi subito un task_id e puoi fare polling fino a 1 richiesta al secondo.
Prezzi
Prezzo pubblicato, senza token né crediti. Se l'attività fallisce, non paghi.
Limiti
max_chars | 65536 |
Errori
| HTTP | Codice | Significato |
|---|---|---|
401 | unauthorized | Chiave API mancante o non valida: controlla l'header Authorization. |
402 | insufficient_balance | Credito esaurito: ricarica per continuare a eseguire attività. |
404 | unknown_type | Tipo di attività sconosciuto: controlla il campo type della richiesta. |
429 | rate_limited | Troppe richieste in poco tempo: rallenta e riprova tra qualche secondo. |
Note tecniche
L'ingresso vuoto viene rifiutato con invalid_input invece di una stringa vuota silenziosa, il che protegge i client che hanno dimenticato di collegare un campo. Le chiamate API riuscite costano $0.002 per elemento.
Come le righe uniche tengono l'ordine di prima comparsa invece di ordinare
La scansione è un unico passaggio lineare con un insieme hash, quindi testo e opzioni identici producono sempre lo stesso JSON che Lei può fissare nei test.
Cosa si invia, cosa si riceve e come si comportano gli errori
Invii un campo obbligatorio denominato text con la stringa multilinea non vuota da unicizzare. Invii facoltativamente trim come booleano o nelle forme di stringa comuni true, false, yes, no, one o zero. Quando trim è omesso vale false: il confronto è esatto, spazi circostanti inclusi. Sono accettati alias come input, value, s, content, body e lines quando client più datati o generatori di moduli usano quei nomi. text assente, un valore non stringa o una stringa di lunghezza zero sollevano invalid_input con un messaggio che nomina il campo, e tali fallimenti non vengono addebitati. In caso di successo la risposta restituisce text come le righe uniche unite da un a capo, lines come lo stesso elenco unico in un array, count con quante righe uniche restano, original come eco dell'ingresso, original_count con quante righe sono state spezzate prima di unicizzare, removed con quante copie successive sono state scartate, first_positions con gli indici sorgente in base uno di ciascuna riga conservata, il flag trim risolto e method pari a unique_lines_ordered. I controlli classici includono un elenco di frutta in classifica con banana e apple ripetute che si riduce a tre righe uniche i cui first_positions puntano alle righe originali, un elenco imbottito di spazi che si comprime ulteriormente quando trim è true, e una sola riga unica che passa invariata con removed pari a zero. I carichi estremamente lunghi oltre il tetto di caratteri documentato falliscono con invalid_input affinché una sola richiesta non monopolizzi la memoria. Il prezzo delle chiamate API riuscite è la base pubblicata di $0.002 per elemento.
Dove un elenco unico di prima vista merita il proprio posto
Poiché questa capacità è un motore parse puro, il prezzo API è la base pubblicata di $0.002 per elemento riuscito e la convalida fallita non consuma il saldo. Tenga i carichi a dimensioni di documento ordinarie adatte a un isolato Worker, non a dump di magazzino da più megabyte.
Casi di integrazione
Costruire fixture stabili da esportazioni disordinate
Trasformi un dump in testo semplice di URL, SKU o e-mail in un elenco di righe uniche per la CI, con first_positions che collegano ogni superstite alla riga di origine.
Domande tecniche
Quanto costano le righe uniche che conservano l'ordine?
Lo strumento nel browser è gratuito. Le richieste API usano il saldo KIT prepagato a $0.002 per chiamata riuscita; un ingresso non valido non viene addebitato.