Localizador do maior sufixo comum entre linhas
report-final.csv, backup-final.csv e export-final.csv compartilham a terminação -final.csv, com 10 caracteres, e não só a extensão .csv. Cole um valor por linha para conferir se nomes de arquivo, caminhos ou códigos seguem a mesma regra. Grátis no seu navegador.
- Grátis
- Funciona no seu navegador
- Sem cadastro
- Seus dados não saem do seu aparelho
Executar grátis
Exemplo resolvido
- Texto
- report-final.csv backup-final.csv export-final.csv
- Sufixo
- -final.csv
- Comprimento
- 10
- Contagem de linhas
- 3
O localizador do maior sufixo comum compara cada linha fornecida por você e retorna a sequência exata de caracteres que todas compartilham no final. Ele é útil quando nomes de arquivos, caminhos, códigos de produtos, rótulos gerados ou outras strings parecem seguir a mesma convenção de terminação. Cole as linhas como texto simples e obtenha um resultado determinístico com o sufixo, seu comprimento em caracteres e a quantidade de linhas examinadas. Nada é inferido, reordenado ou comparado de forma aproximada.
Encontre a terminação compartilhada de uma lista
Insira um valor por linha e execute o localizador. A ferramenta começa no último caractere de cada linha e recua somente enquanto todos os caracteres continuam idênticos. Portanto, o resultado é o maior sufixo exato, e não apenas uma extensão de arquivo ou a última palavra.
Por exemplo, linhas terminadas em <code>-final.csv</code> compartilham toda essa sequência mesmo quando os prefixos são diferentes. Se uma linha termina em <code>.csv</code> e outra em <code>. CSV</code>, as letras não coincidem e a extensão maior não é informada como comum.
Esse rigor ajuda você a auditar regras de nomenclatura sem ocultar diferenças. Quando você fornece apenas uma linha, a linha inteira é seu sufixo comum.
Entenda as quebras de linha e a comparação
Os separadores do Windows, Unix e retornos de carro antigos são normalizados antes da comparação, para que textos copiados de sistemas diferentes se comportem da mesma maneira. Uma única quebra no final é tratada como terminador do arquivo, e não como registro vazio adicional. Linhas vazias em outras posições são preservadas e participam do cálculo; como não contêm caracteres, elas tornam vazio o sufixo comum.
A correspondência usa pontos de código Unicode, em vez de unidades UTF-16 brutas. Por isso, muitos emojis contam como um caractere no comprimento retornado. A comparação permanece literal: acentos, formas de normalização, espaços, pontuação e caixa não são alterados.
Espaços no fim são caracteres reais e influenciam a resposta. Se você deseja comparar rótulos pelo significado, e não por sua representação exata, limpe ou normalize primeiro o conteúdo de origem.
Use o resultado em validação e automação
Um sufixo comum é um indicador compacto de consistência de nomes. Em um pipeline de lançamento, você pode comparar nomes de artefatos e exigir uma extensão esperada antes do envio. Em uma migração, pode examinar caminhos exportados para verificar se todos compartilham o mesmo diretório final ou marcador de formato.
Na preparação de dados, pode isolar um marcador de controle ou código de fornecedor após um prefixo variável. A capacidade não infere extensões, remove espaços, altera caixa nem divide valores pela pontuação. Essas escolhas modificariam a fonte.
Em vez disso, ela oferece uma primitiva determinística que pode ser combinada com etapas separadas de limpeza.
Casos de uso
Verificar extensões de arquivos
Confirme se um lote de nomes compartilha a mesma extensão literal ou um sufixo de versão mais longo antes do processamento.
Examinar padrões de identificadores
Revele um marcador final fixo compartilhado por códigos de produtos, rótulos de chamados ou identificadores externos.
Comparar caminhos exportados
Detecte um diretório final, nome de arquivo ou marcador de formato comum nos caminhos produzidos por uma migração.
Perguntas frequentes
O que acontece quando nenhuma terminação é compartilhada?
O sufixo é uma string vazia e o comprimento retornado é zero.
A comparação diferencia maiúsculas de minúsculas?
Sim. Elas são caracteres diferentes, e a entrada é comparada exatamente como você a fornece.
Uma quebra final adiciona uma linha vazia?
Não. Uma única quebra final é o terminador do arquivo; linhas vazias em outras posições continuam na comparação.
Como os emojis são contados?
O comprimento usa pontos de código Unicode; assim, muitos emojis contam como um caractere mesmo que JavaScript os armazene em duas unidades UTF-16.
O que recebo se colar uma única linha?
A linha inteira, porque não há outra linha para contradizê-la. Assim que você acrescenta um segundo valor, o resultado se reduz aos caracteres que as duas linhas compartilham no final.
Ferramentas relacionadas
Para desenvolvedores — acesso via API
Tudo nesta página está disponível via API. Esta seção é para equipes que querem integrar a ferramenta aos próprios sistemas; quem não precisa disso pode simplesmente usar a ferramenta acima.
Endpoint
Autenticação por token Bearer. Um único POST coloca a tarefa na fila; o resultado chega por webhook ou link assinado.
Chame do seu código
curl -X POST https://api.kit.forhosting.com/str/common-suffix \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"text":"report-final.csv\nbackup-final.csv\nexport-final.csv"}'const res = await fetch("https://api.kit.forhosting.com/str/common-suffix", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"text": "report-final.csv\nbackup-final.csv\nexport-final.csv"
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/str/common-suffix",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"text": "report-final.csv\nbackup-final.csv\nexport-final.csv"
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/str/common-suffix", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"text":"report-final.csv\\nbackup-final.csv\\nexport-final.csv"}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"text":"report-final.csv\nbackup-final.csv\nexport-final.csv"}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/str/common-suffix", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Exemplo de requisição
{
"text": "report-final.csv\nbackup-final.csv\nexport-final.csv"
}Exemplo de resposta
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "str.common_suffix",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}A API é assíncrona: cada chamada devolve um task_id na hora. Se preferir polling, consulte o status a até 1 requisição por segundo.
Preço
Preço publicado, sem tokens nem créditos escondidos. Tarefa que falha não é cobrada.
Limites
max_chars | 1000000 |
Erros
| HTTP | Código | O que significa |
|---|---|---|
401 | unauthorized | Token ausente ou inválido. Confira o header Authorization. |
402 | insufficient_balance | Saldo insuficiente para esta tarefa. Faça uma recarga e tente de novo. |
404 | unknown_type | Esse tipo de tarefa não existe. Confira o campo type no catálogo. |
429 | rate_limited | Muitas requisições em pouco tempo. Espere um instante e tente de novo. |
Notas técnicas
Encontre a terminação compartilhada de uma lista
A resposta inclui <code>suffix</code>, a quantidade de caracteres Unicode em <code>length</code> e <code>line_count</code>. Assim, fluxos automáticos distinguem uma correspondência real de um sufixo vazio e registram quantos valores foram comparados.
Use o resultado em validação e automação
A API retorna JSON estruturado: compare <code>suffix</code> com a convenção exigida, use <code>length</code> para remover exatamente esses caracteres com código compatível com Unicode ou registre <code>line_count</code> como evidência do lote. O navegador atende a verificações rápidas, e cada solicitação de API custa US$ 0,002 quando você automatiza a regra.
Perguntas técnicas
Quanto custa uma solicitação de API?
Cada solicitação de API custa US$ 0,002. A versão para navegador pode ser usada diretamente nesta página.