Rimuovere righe duplicate
Le righe duplicate si infiltrano nei log, nelle mailing list, nelle colonne CSV esportate come testo semplice, negli storici della shell, nei campioni di codice incollati due volte e nelle app di note in cui lo stesso punto è stato copiato più di una volta.
Esegui gratis nel browser
Funziona nel tuo browser: gratis, senza registrazione, i file non escono dal tuo dispositivo.
Pulirle a mano è lento e soggetto a errori, soprattutto quando le differenze di maiuscole nascondono veri duplicati o quando l'ordine conta e Lei deve conservare la prima apparizione anziché l'ultima. Questo strumento prende il testo multilinea che Lei inserisce, lo divide in righe e restituisce una stringa deduplicata deterministica che preserva l'ordine originale delle prime occorrenze. Può opzionalmente ignorare le maiuscole così che Apple e apple contino come la stessa riga mantenendo la prima capitalizzazione scritta. L'input vuoto viene rifiutato con un chiaro errore di validazione invece di restituire silenziosamente un risultato vuoto, proteggendo i client che hanno dimenticato di collegare un campo. Il widget gratuito del browser e l'API a pagamento condividono un'unica funzione isomorfa pura, così demo, script e job di produzione non divergono mai sulla stessa stringa. Nessun round-trip di rete nel motore, nessun seme casuale e nessuna dipendenza dall'orologio: testo e opzioni identici producono sempre un JSON identico che può usare per test golden e cache.
Come si usa
Inserisci i dati nel modulo qui sopra. Lo strumento li controlla prima del calcolo e mostra il risultato nella stessa pagina.
Controlla i dati
Segui le etichette e le unità indicate per ogni campo. Se manca qualcosa o un valore non è ammesso, la pagina indica cosa correggere.
Ripeti il calcolo o automatizzalo
Usa lo strumento web per controlli singoli e l’API quando vuoi integrare la stessa capacità in un flusso automatizzato.
Casi d'uso
Ottieni subito una risposta
Inserisci una serie di valori e visualizza il risultato senza preparare un foglio di calcolo o uno script.
Confronta gli scenari
Modifica un valore alla volta e ripeti il calcolo per capire cosa cambia il risultato.
Automatizza le attività ripetute
Usa l’API quando lo stesso calcolo deve essere eseguito nel tuo prodotto o flusso.
Domande frequenti
Come si usa questa capacità?
Compila i campi qui sopra ed eseguila in questa pagina. Il modulo segnala i dati da correggere.
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/dedupe-lines \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"text":"apple\nbanana\napple\ncherry\nbanana"}'const res = await fetch("https://api.kit.forhosting.com/str/dedupe-lines", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"text": "apple\nbanana\napple\ncherry\nbanana"
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/str/dedupe-lines",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"text": "apple\nbanana\napple\ncherry\nbanana"
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/str/dedupe-lines", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"text":"apple\\nbanana\\napple\\ncherry\\nbanana"}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"text":"apple\nbanana\napple\ncherry\nbanana"}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/str/dedupe-lines", 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": "apple\nbanana\napple\ncherry\nbanana"
}Esempio di risposta
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "str.dedupe_lines",
"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.
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. |