ForHosting KIT · Texto e IA

Converter tabs em espaços

Uma tabulação no início da linha vira 4 espaços, mas uma tabulação depois de um caractere vira 3: cada uma salta até a próxima parada, então o alinhamento se mantém e o arquivo fica só com espaços. Grátis no seu navegador.

  • Grátis
  • Funciona no seu navegador
  • Sem cadastro
  • Seus dados não saem do seu aparelho
Use pelo WebAPIE-mailTelegramApp em breve
Se você digitar
Texto
function hi() { return true; }
Tamanho da tabulação
4
Você obtém
Texto
function hi() { return true; }
Tabulações substituídas
1
Espaços adicionados
4
Caracteres antes
31

A mistura de tabulações e espaços é uma das disputas de estilo mais comuns em equipes de software e também uma das causas mais silenciosas de diffs quebrados, patches inválidos e linters de integração contínua que rejeitam o envio. Um conversor de tabs em espaços recebe o texto-fonte que ainda contém caracteres de tabulação e reescreve cada tab como espaços, de modo que as colunas visuais permaneçam iguais e o arquivo fique indentado só com espaços. Esta capacidade percorre cada linha da esquerda para a direita, avança um contador de coluna a cada caractere e, ao encontrar um tab, insere exatamente os espaços necessários para alcançar o próximo tab stop da largura que você escolher. Expandem-se tanto a indentação de bloco no início da linha quanto as tabs de alinhamento no meio da linha. Os espaços já presentes não são tocados, então lacunas intencionais de vários espaços não são colapsadas.

Como os tab stops expandem tabs em espaços sem perder o alinhamento

Um caractere de tabulação não é um número fixo de espaços; é um salto até o próximo múltiplo do tamanho de tab medido a partir do início da linha. Editores e terminais usam essa regra para que um tab após um rótulo curto e outro após um longo caiam na mesma grade de colunas.

A indentação inicial escrita com um ou mais tabs torna-se um múltiplo limpo de espaços, e as tabs em linha usadas para alinhar comentários ou listas de parâmetros mantêm suas colunas visuais em vez de virarem uma substituição bruta de cada tab pela mesma sequência fixa de espaços. Os caracteres de retorno de carro são preservados em arquivos CRLF sem reiniciar a coluna até o line feed, de modo que finais de linha no estilo Windows não atrapalhem a aritmética de colunas.

Quando converter tabulações em espaços vale a pena

Pipelines de estilo costumam precisar de um passo de reescrita determinística antes de formatadores que assumem só espaços, ou após importar de editores que ainda emitem tabs rígidas. Sites de documentação e plataformas de desafios de programação que aceitam envios de alunos podem normalizar tabs no servidor para que autoavaliadores comparem arquivos só com espaços e nunca falhem por diferenças invisíveis de tabulação.

Equipes de conteúdo que ranqueiam por conversor de tabs em espaços se beneficiam de um caminho gratuito no navegador que coincide byte a byte com a automação paga, para que marketing e runbooks de engenharia não divirjam. Validação falha não consome saldo.

Tarefas e envios LMS

Normalize o código do aluno no upload para autoavaliadores compararem arquivos só com espaços e não falharem por caracteres tab invisíveis.

Como o conversor de tabs em espaços expande cada tabulação?

Tabs iniciais e internas expandem assim e o alinhamento visual se preserva.

E se o texto não tiver caracteres de tabulação?

Você pode pular regravar o arquivo quando changed for false.

Por que uma tabulação virou três espaços e não quatro?

Porque a tabulação é um salto até a próxima parada, não um bloco fixo de espaços. Com largura 4, uma tabulação logo depois de um caractere só precisa de três espaços para chegar à parada seguinte.

Qual largura de tabulação devo escolher?

Use a largura que o seu editor ou guia de estilo espera. O padrão é 4, o ajuste comum nos editores modernos, e qualquer número inteiro de 1 a 16 é aceito, então o estilo de dois espaços também funciona.

Os finais de linha do Windows são preservados?

Sim. Os retornos de carro ficam como estão e a contagem de colunas só recomeça na quebra de linha, então arquivos com finais do Windows saem com os mesmos finais e as colunas alinhadas.

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.

POSThttps://api.kit.forhosting.com/dev/tabs-to-spaces

Autenticação por token Bearer. Um único POST coloca a tarefa na fila; o resultado chega por webhook ou link assinado.

curl -X POST https://api.kit.forhosting.com/dev/tabs-to-spaces \
  -H "Authorization: Bearer $KIT_KEY" \
  -H "Content-Type: application/json" \
  -d '{"text":"function hi() {\n\treturn true;\n}"}'
{
  "text": "function hi() {\n\treturn true;\n}"
}
{
  "task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
  "type": "dev.tabs_to_spaces",
  "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.

por chamadaUS$ 0,002

Preço publicado, sem tokens nem créditos escondidos. Tarefa que falha não é cobrada.

HTTPCódigoO que significa
401unauthorizedToken ausente ou inválido. Confira o header Authorization.
402insufficient_balanceSaldo insuficiente para esta tarefa. Faça uma recarga e tente de novo.
404unknown_typeEsse tipo de tarefa não existe. Confira o campo type no catálogo.
429rate_limitedMuitas requisições em pouco tempo. Espere um instante e tente de novo.

Como os tab stops expandem tabs em espaços sem perder o alinhamento

Este conversor implementa a mesma regra: mantém um índice de coluna com base zero que reinicia a cada quebra de linha, avança um para cada caractere comum (incluindo espaços comuns) e, ao ver um tab, calcula n igual a tab_size menos a coluna módulo tab_size, emite exatamente n espaços e avança a coluna em n. Por isso um tab na coluna zero com tab_size quatro vira quatro espaços, enquanto um tab na coluna um vira três, e um tab já em um stop gera um stop completo novo de quatro espaços. O algoritmo é uma única passagem da esquerda para a direita, sem lookahead, sem parsing de linguagem e sem chamadas de rede, então a mesma entrada sempre produz a mesma saída em cada Worker e no navegador.

Campos de entrada, formato da resposta, limites e erros de validação

Envie um corpo JSON com o campo de string obrigatório text contendo o código ou o texto simples que deseja normalizar. Aliases opcionais como input, code, source, content e body são aceitos para a mesma carga, reduzindo renomeações em formulários e scripts existentes. O inteiro opcional tab_size define a largura do tab stop; o padrão é quatro, alinhado à maioria dos editores modernos e a guias de estilo de JavaScript, Python e Rust que esperam indentação de quatro ou dois espaços depois que as tabs saem. Valores válidos são inteiros de um a dezesseis inclusive; fora desse intervalo, não inteiros, NaN e Infinity falham com invalid_input citando tab_size. Texto ausente, não string ou string vazia falha com invalid_input e não é cobrado. O comprimento máximo de entrada é de cem mil caracteres para que uma chamada caiba no orçamento de memória do Worker em arquivos-fonte típicos e trechos multiarquivo pequenos. Em sucesso a resposta inclui text, a string totalmente expandida; tab_size, a largura aplicada; tabs_replaced, quantos caracteres tab foram encontrados; spaces_added, o total de espaços inseridos no lugar; chars_before e chars_after, os comprimentos antes e depois; line_count, o número de linhas ao dividir por formas comuns de nova linha; changed, booleano verdadeiro se ao menos um tab foi expandido; e message, um resumo breve da reescrita. Se a entrada não tinha tabs, text volta inalterado, tabs_replaced é zero, changed é false e a mensagem diz que nada mudou para que você possa pular a gravação do arquivo.

Quando uma API de tabs em espaços se paga em fluxos reais

Scripts de migração que convertem em lote um repositório legado de tabs para espaços podem chamar o mesmo contrato a partir de um loop de shell ou de um Worker na borda sem instalar módulos Node em cada laptop. Como a implementação é parse puro de nível A, cada chamada bem-sucedida custa o preço base publicado US$ 0,002 sem tokens de modelo e sem rede de saída. Mantenha as requisições abaixo do limite de caracteres, fixe tab_size na configuração e obtenha código só com espaços reprodutível para CI, plugins LMS e lotes offline sem levantar um formatador ciente de linguagem só para um ajuste de indentação em nível de caractere.

Normalização de estilo no CI

Expanda tabs rígidas para espaços com um tab_size fixo antes do lint e do format para diffs limpos e ferramentas que rejeitam indentação mista aceitarem o envio.

Reescrita em massa de repositórios legados

Converta em lote módulos indentados com tabs para só espaços via API, preservando tabs de alinhamento no meio da linha como sequências de espaços corretas na coluna.

Quais valores posso usar para tab_size?

Qualquer inteiro de 1 a 16 inclusive. O padrão é 4. Valores fora desse intervalo ou não inteiros falham com invalid_input e não são cobrados.

Os espaços existentes são removidos ou colapsados?

Não. Caracteres de espaço existentes permanecem iguais. Apenas caracteres tab U+0009 são substituídos pela sequência de espaços exigida pela coluna atual e por tab_size.

Quanto custa o conversor de tabs em espaços?

A ferramenta no navegador é gratuita. Pedidos API usam saldo pré-pago do KIT a US$ 0,002 por chamada bem-sucedida; entrada inválida não é cobrada.

Ver a documentação completa do KIT →