Remover espaços de cada linha
Limpe as bordas de cada linha de uma vez: três linhas com sobras, uma com tabulações, perdem 10 caracteres a mais e viram hello, world e foo bar, com o espaço interno de foo bar mantido. Linhas em branco continuam no lugar. 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
- hello world foo bar
- Entrada
- hello world foo bar
- Texto
- hello world foo bar
- Nº de linhas
- 3
- Linhas
- hello, world, foo bar
Um aparador de espaços consciente de linhas transforma uma colagem multilinha bagunçada em bordas limpas sem colapsar as palavras dentro de cada linha. Informe qualquer string não vazia—logs, trechos de código, dumps TSV ou prosa copiada de um documento—e a ferramenta normaliza as quebras de linha, divide nos newlines e aplica um trim completo em cada linha para que espaços iniciais, tabs finais e ruído de indentação mista desapareçam enquanto o espaçamento interior permanece intacto. Editores, scripts de QA, verificadores de lição de casa e pré-processadores ETL precisam dessa mesma regra por linha sem abrir um busca-e-substitui de IDE completo.
O que o trim por linha significa e por que difere de String.trim
A maioria das linguagens oferece um único trim que só remove espaços do início e do fim de toda a string. Isso deixa intactas as linhas do meio indentadas, que é exatamente o problema ao colar um bloco de linhas de log, uma amostra de código com espaços finais acidentais ou uma exportação de planilha multi-linha em que cada linha tem células com padding.
Esta ferramenta apara cada linha de forma independente: depois que os newlines são normalizados de Windows CRLF e CR legado para uma forma LF única, o texto é dividido em LF, cada segmento passa por um trim de espaços com suporte Unicode completo e os segmentos são reunidos com LF. Espaços interiores entre palavras permanecem; só as bordas de cada linha são limpas.
Linhas em branco entre o conteúdo viram strings vazias após o trim, de modo que a estrutura que usava separadores em branco continua visível como linhas em branco em vez de sumir. Linhas em branco no início e no fim do paste original ainda estão presentes como linhas vazias após o split, porque o algoritmo não descarta linhas—só as apara.
O desenho combina com comandos cotidianos do editor como «aparar espaços finais» aplicados a uma seleção, e também limpa o padding inicial que costuma aparecer ao copiar de listas indentadas ou UIs de chat.
Dicas práticas, limites e buscas relacionadas
Use esta capacidade quando a intenção de busca for remover espaços das linhas, limpar margens iniciais e finais multilinha ou limpar paste indentado online. Lembre-se da indentação intencional só se precisar de espaços iniciais para layout de código—esta ferramenta os remove; se quiser só limpeza final preservando indent, precisa de outra política ou um pré-passo. Fonte HTML e Markdown ainda aparam cada linha bruta da string enviada; remova tags primeiro se importar o texto renderizado e não a marcação.
Esta página não é só um String.trim de documento inteiro, não é um apagador de linhas em branco, não é um colapsador de espaços que vira espaços duplos em um, não é um limpador de células CSV com consciência de delimitador e não é um reescritor com IA. Ao ensinar alunos ou integrar revisores, mostre a mesma amostra antes e depois para que vejam que só as bordas das linhas mudam e que o espaçamento interno das palavras fica intacto.
Casos de uso
Limpar paste de log e console para tickets
Desenvolvedores colam logs multilinha com espaços iniciais acidentais e tabs finais; a ferramenta devolve linhas alinhadas prontas para trackers de bugs e diffs.
Normalizar dumps de lição e redação
Professores e scripts LMS removem o padding das bordas de cada linha enviada antes que pipelines de contagem de palavras ou plágio vejam o texto.
Perguntas frequentes
Isto remove espaços entre palavras?
Não. Só o espaço no início e no fim de cada linha é removido. Espaços e tabs interiores de uma linha são preservados.
O que acontece com entrada vazia?
Forneça uma string não vazia com pelo menos um caractere que não seja espaço.
Linhas em branco são apagadas?
Não. Linhas em branco ficam como linhas vazias após o trim. A ferramenta não descarta nem mescla linhas; só apara as bordas de cada uma.
Como são tratadas as quebras de linha do Windows?
CRLF e CR isolado são normalizados para LF antes do split para que o mesmo paste produza o mesmo resultado em cada plataforma.
O aparador de espaços por linha é grátis?
A ferramenta do navegador é grátis e roda localmente.
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/trim-lines \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"text":" hello \n\tworld\t\n foo bar "}'const res = await fetch("https://api.kit.forhosting.com/str/trim-lines", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"text": " hello \n\tworld\t\n foo bar "
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/str/trim-lines",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"text": " hello \n\tworld\t\n foo bar "
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/str/trim-lines", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"text":" hello \\n\\tworld\\t\\n foo bar "}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"text":" hello \n\tworld\t\n foo bar "}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/str/trim-lines", 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": " hello \n\tworld\t\n foo bar "
}Exemplo de resposta
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "str.trim_lines",
"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 | 100000 |
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
Entrada vazia ou só de espaços é rejeitada com um erro invalid_input claro para que a automação nunca trate um paste em branco como limpeza bem-sucedida. O caminho é lógica de string pura e determinística—sem rede, sem sementes aleatórias, sem dependência de relógio—assim o executor gratuito do navegador e a API pré-paga devolvem o mesmo JSON sempre que você a chama.
O que o trim por linha significa e por que difere de String.trim
Entrada inteira vazia ou só de espaços é erro duro: não há documento limpo significativo a devolver, e os clientes devem tratar isso como invalid_input e não como sucesso de zero linhas.
Como chamar a API e o que a resposta contém
Prefira enviar o corpo multilinha bruto em vez de colapsar newlines de antemão quando quiser semântica real por linha; colapsar tudo em uma linha só apararia as bordas externas de um único segmento. Envie um corpo JSON com um campo string obrigatório text (aliases input, value, string, s, content e body). O valor deve ser uma string não vazia após o trim geral de espaços e não deve exceder cem mil caracteres para que uma única requisição não esgote a memória do Worker ou do navegador com pastes enormes. Em sucesso a resposta ecoa input como a string original enviada, text como o resultado totalmente aparado por linha unido com LF, line_count como o número de linhas após o split (incluindo as vazias), lines como um array ordenado das strings de linha aparadas, chars_before e chars_after como os comprimentos das strings original e limpa, chars_removed como quantos caracteres o trim removeu no total, e message como um resumo curto em inglês que informa a contagem de linhas e os caracteres removidos. Validação falha—text ausente, valor que não é string, payload grande demais ou conteúdo vazio após o trim geral—retorna invalid_input e nunca é cobrada. O preço é um US$ 0,002 fixo por requisição bem-sucedida com unidade item e preço unitário marginal zero. Ao integrar, asserte em text ou lines para o conteúdo limpo, compare opcionalmente chars_removed em checagens de regressão e trate invalid_input como bug do cliente em envios de formulário em branco e não como evento de cobrança.
Dicas práticas, limites e buscas relacionadas
Checagens de ida e volta para testes são fáceis: envie duas linhas com padding e espere essas palavras alinhadas à esquerda sem espaços finais; envie uma terceira linha com tab e confirme que o tab sumiu enquanto espaços duplos interiores de uma frase permanecem; envie de propósito string vazia ou só espaços para confirmar invalid_input e a mensagem que pede uma string não vazia. Prefira data.clean_csv quando o payload for CSV tabular com correções de encoding; prefira str.paragraph_count quando precisar de totais de parágrafos por linhas em branco; prefira esta capacidade quando humanos já separaram as linhas e você só precisa de bordas limpas em cada uma. Tarefas falhas que retornam invalid_input não consomem saldo pré-pago, o que mantém barata a validação de formulários e testes negativos de CI.
Casos de integração
Testes unitários de pré-processadores de texto
Gere fixtures multilinha com padding de referência e rejeições de entrada vazia para editores, estágios ETL e pipelines de markdown.