Adicionar números de linha
Coloque um número na frente de cada linha de código, logs, letras de música ou anotações: alpha, beta e gamma viram 1. alpha, 2. beta e 3. gamma. Escolha seu próprio separador ou número inicial para continuar uma lista. 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
- alpha beta gamma
- Entrada
- alpha beta gamma
- Separador
- .
- Início
- 1
- Contagem de linhas
- 3
Uma ferramenta de adicionar números de linha transforma um colar bruto de código, logs, letras ou notas em uma listagem numerada estável que você pode compartilhar em tickets, lições e revisões. Digite qualquer string não vazia de uma ou várias linhas; a ferramenta normaliza quebras Windows e Mac clássico, divide em cada quebra de linha e prefixa cada segmento com um inteiro sequencial mais o separador escolhido—por padrão um ponto e um espaço para o estilo familiar 1. aparecer sem configuração extra. O start opcional permite continuar uma lista a partir de zero, um ou qualquer inteiro no intervalo publicado. Desenvolvedores, professores, agentes de suporte e pipelines de conteúdo precisam dessa mesma numeração determinística sem abrir um IDE completo.
Como a numeração sequencial de linhas funciona
A numeração de linhas é uma das ajudas de legibilidade mais antigas em programação e escrita técnica: cada linha visual recebe um rótulo inteiro para que as pessoas apontem “linha 17” sem citar metade do documento. Esta capacidade implementa essa regra cotidiana em texto simples em vez de páginas PDF ou parágrafos de processador de texto. Primeiro a entrada é verificada: text ausente, valor que não é string, ou string vazia após aparar espaços é rejeitada para que colagens em branco nunca pareçam sucesso.
As quebras são normalizadas para que Windows CRLF, Mac antigo CR e Unix LF se tornem uma única forma LF antes da divisão. O divisor então quebra a string em cada LF; cada segmento resultante—incluindo segmentos vazios entre quebras consecutivas—é uma linha e recebe seu próprio número. O primeiro número é o valor inteiro start (padrão um), e cada linha seguinte incrementa em um.
Você pode passar um separador diferente como dois-pontos e espaço, parêntese de fechamento, pipe ou marcador tipo tab, desde que o separador fique dentro do limite de caracteres publicado. Quando precisar de totais de parágrafos em vez de rótulos por linha, use um contador de parágrafos por linhas em branco; quando precisar de carimbos de página PDF, use uma capacidade de numeração de páginas PDF. Esta landing é só sobre prefixar números sequenciais em linhas de texto simples.
Dicas práticas, limites e quando usar esta ferramenta
Use esta capacidade quando a intenção de busca for adicionar números de linha, numerar linhas online ou numeração sequencial de linhas para texto simples. Cole um trecho de código, extrato de log, poema ou checklist, converta uma vez e coloque o bloco numerado em um ticket, e-mail ou formulário de feedback de aluno. Lembre-se de quebras finais intencionais: um LF final cria um último segmento vazio que ainda recebe um número, o que combina com como muitos editores tratam quebras de fim de arquivo.
Linhas individuais extremamente longas ainda contam como uma linha cada; a ferramenta não quebra por largura de caracteres. Origem HTML e Markdown é numerada como strings brutas; remova a marcação primeiro se quiser só linhas de prosa visíveis. Esta landing não é carimbo de página PDF, não é contador de parágrafos, não é contador de palavras ou caracteres e não é ferramenta de diff que inventa hunks.
Prefira numeração de páginas PDF quando o documento for PDF binário multipágina; prefira um contador de parágrafos quando humanos separaram ideias com linhas em branco e você só precisa do total; prefira esta capacidade quando revisores devam citar índices de linha exatos em texto simples. Ao ensinar revisão de código, numere o mesmo trecho duas vezes com separadores diferentes para que aprendizes vejam como os rótulos ficam estáveis enquanto a apresentação muda.
Casos de uso
Revisão de código e relatórios de bugs
Cole um stack trace ou trecho, adicione números de linha estáveis e cite “linha 12” em tickets sem compartilhar um repositório inteiro.
Preparação de lições e folhas de exercício
Professores numeram versos de poemas ou listas de exercícios para que alunos respondam por número de linha em quizzes e folhas.
Trechos de log para handoffs de suporte
Agentes de suporte numeram colagens de log multilinha antes de escalar para que engenheiros apontem a linha exata que falha.
Perguntas frequentes
Como as linhas são definidas?
Após normalizar CRLF e CR para LF, o texto é dividido em cada LF. Cada segmento—incluindo os vazios entre quebras consecutivas—recebe um número sequencial.
Posso mudar o separador ou o número inicial?
Start deve ser inteiro de 0 a 1,000,000; separator é limitado a 32 caracteres.
Isto numera páginas PDF?
Não. Só numera linhas de texto simples. Use uma ferramenta de numeração de páginas PDF quando precisar de carimbos em páginas PDF.
A ferramenta de números de linha é grátis?
A ferramenta do navegador é grátis e roda localmente.
As linhas vazias também recebem número?
Sim. Cada linha vazia entre duas quebras de linha é numerada, então os rótulos batem com o que você vê no editor. Uma quebra de linha no final também acrescenta uma última linha vazia numerada.
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/number-lines \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"text":"alpha\nbeta\ngamma"}'const res = await fetch("https://api.kit.forhosting.com/str/number-lines", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"text": "alpha\nbeta\ngamma"
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/str/number-lines",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"text": "alpha\nbeta\ngamma"
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/str/number-lines", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"text":"alpha\\nbeta\\ngamma"}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"text":"alpha\nbeta\ngamma"}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/str/number-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": "alpha\nbeta\ngamma"
}Exemplo de resposta
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "str.number_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 |
max_separator_chars | 32 |
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ó com espaços é rejeitada com erro claro invalid_input para que a automação nunca trate um formulário em branco como arquivo de zero linhas bem-sucedido. O caminho é lógica pura de string—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ê chama.
Como a numeração sequencial de linhas funciona
Entre o número e o conteúdo original da linha a ferramenta insere a string separator, que por padrão é um ponto seguido de espaço para a saída ler como lista numerada clássica.
Como chamar a API e o que a resposta contém
Prefira enviar o corpo do documento bruto com suas quebras reais em vez de pré-juntar tudo em uma linha quando quiser rótulos multilinha verdadeiros. Envie um corpo JSON com um campo de string obrigatório text (aliases input, value, string, s, content e body). Opcionalmente inclua separator (aliases sep e delimiter) como string de no máximo trinta e dois caracteres, e start (aliases from, offset e begin) como inteiro entre zero e um milhão inclusive. O valor text deve ser não vazio após aparar espaços e não exceder cem mil caracteres para que uma única requisição não esgote a memória do Worker ou do navegador com colagens enormes. Em sucesso a resposta ecoa input como a string original enviada, text como a string de trabalho aparada, separator e start como as opções efetivas de numeração, line_count como o número de segmentos numerados, lines como um array ordenado de strings de linha totalmente prefixadas, numbered como essas linhas unidas com LF, e message como um resumo curto que informa quantas linhas foram numeradas e com qual start e separator. Validação falha—text ausente, valor não string, payload excessivo, conteúdo vazio após o aparo, separator não string ou grande demais, ou start não inteiro ou fora do intervalo—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 marginal unitário zero. Ao integrar, asserte em numbered ou lines para a listagem completa, em line_count para o total, e trate invalid_input como bug do cliente em envios de formulário em branco, não como evento de cobrança.
Dicas práticas, limites e quando usar esta ferramenta
Checagens de ida e volta para testes são fáceis: alimente três linhas curtas separadas por LF e espere line_count três com prefixos a partir de um e o separator padrão; mude start para dez e espere dez, onze, doze; envie de propósito string vazia ou espaços para confirmar invalid_input e a mensagem que pede string não vazia. Tarefas que falham e 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.
Perguntas técnicas
O que acontece com entrada vazia?
text ausente, valores não string ou strings vazias após o aparo retornam invalid_input e nunca são cobrados.