ForHosting KIT · Texto e IA

Preencher largura monoespaçada

Alinhe colunas que misturam texto latino e do Leste Asiático: 東京 ocupa 4 colunas, então preenchê-lo até 8 acrescenta só 4 espaços, não 6. Caracteres largos e a maioria dos emojis contam como duas colunas. 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
東京
Largura
8
Lado
Right
Você obtém
Resultado
東京
Caractere
Comprimento original
2
Largura visual original
4

Preencher uma string para que as colunas fiquem alinhadas em um terminal é um problema de largura visual, não de contagem de caracteres. Ideogramas do Leste Asiático, sílabas hangul, letras latinas de largura completa e a maioria dos emoji ocupam duas colunas em uma fonte monoespaçada, enquanto marcas combinantes, seletores de variação e joiners de largura zero não ocupam nenhuma. Um preenchimento baseado no length de JavaScript desalinha qualquer célula que misture latim com japonês, chinês ou coreano. Esta ferramenta mede colunas de exibição no estilo East Asian Width e insere um caractere de preenchimento de uma coluna à esquerda, à direita ou dos dois lados até atingir a contagem-alvo.

Como a largura visual da coluna é medida

Em um terminal monoespaçado típico, cada letra, dígito e pontuação ASCII ocupa uma coluna. Esse modelo mental quebra assim que a string contém um caractere cujo East Asian Width é Wide ou Fullwidth. Ideogramas unificados CJK, sílabas hangul, dígitos de largura completa (as formas ideográficas de zero a nove) e o bloco latino de largura completa ocupam duas colunas cada.

Marcas combinantes das categorias Mn ou Me, caracteres de formato, vogais mediais e consoantes finais jamo do hangul, seletores de variação e o joiner de largura zero ocupam zero colunas e se ligam ao grafema anterior. Pares de indicadores regionais que formam um emoji de bandeira são tratados como um único cluster de duas colunas, e emoji unidos com um joiner de largura zero permanecem um cluster de largura dois em vez de empilhar pictogramas independentes.

Caracteres de largura ambígua, como letras gregas e alguns símbolos, seguem a convenção POSIX e ocidental e contam como uma coluna, o que coincide com a maioria dos terminais Linux e macOS fora de um locale do Leste Asiático. Caracteres de controle, inclusive tab e quebra de linha, são rejeitados: a largura do tab não é propriedade da string, e esta ferramenta preenche uma célula, não uma tabela inteira.

O algoritmo percorre code points Unicode, nunca pares substitutos UTF-16, então um único emoji fora do Basic Multilingual Plane é um caractere, não dois. O resultado é a mesma contagem de colunas que você obteria de uma medição conservadora no estilo wcwidth, exatamente o que precisa antes de acrescentar caracteres de preenchimento para que um nome japonês e um SKU latino compartilhem uma borda direita reta.

Onde o preenchimento por largura visual aparece no trabalho real

Autores de CLI, formatadores de log e qualquer pessoa que imprima uma tabela em fonte monoespaçada encontram este problema na primeira vez que um valor japonês, chinês ou coreano cai numa coluna dimensionada com o comprimento da string. Números de fatura ficam ao lado de nomes de produto; um nome CJK que tem dois caracteres JavaScript ocupa quatro colunas de terminal e empurra a coluna de preço para a direita.

Tabelas Markdown, painéis de status de um README e impressoras térmicas de recibo têm a mesma restrição quando uma célula mistura escritas. Pipelines de dados que emitem arquivos de exportação de largura fixa para mercados do Leste Asiático não podem usar um preenchimento por contagem de caracteres sem quebrar o leiaute que o parser bancário ou de mainframe espera. Prefira esta página quando a intenção de busca for preencher na largura monoespaçada, largura visual, East Asian Width, wcwidth ou alinhar colunas CJK num terminal.

Pad à esquerda ou com zeros de identificadores ASCII é outra consulta e pertence à ferramenta de pad por contagem de caracteres; esta landing trata do alinhamento de colunas que só aparece quando caracteres largos entram na célula.

Alinhar células CJK em tabelas de terminal

Preencha à direita células mistas de latim e japonês, chinês ou coreano até uma largura visual compartilhada para que preço e status fiquem retos na saída CLI.

Campos de exportação do Leste Asiático em largura fixa

Preencha com espaços nomes de produto e endereços até o orçamento de colunas que um arquivo legado de largura fixa espera, contando caracteres de largura completa como duas colunas.

Centralizar banners de escritas mistas

Preencha os dois lados de um título curto que contém CJK ou emoji para que uma linha de recibo ou cabeçalho de log monoespaçado fique visualmente centralizado.

Em que isto difere do preenchimento comum de strings?

O pad comum conta caracteres JavaScript. Esta ferramenta conta colunas visuais monoespaçadas, então 東京 tem largura 4, não 2, e as colunas permanecem alinhadas quando latim e CJK compartilham uma linha.

O que acontece se o texto já for mais largo que o alvo?

Esta ferramenta nunca trunca; a largura-alvo deve ser maior ou igual à largura visual medida.

Posso preencher com um espaço de largura completa ou um emoji?

Não. O caractere de preenchimento deve ocupar exatamente uma coluna visual. Use um espaço ASCII, 0, hífen ou outro glifo estreito.

Como emoji e bandeiras são contados?

A maioria dos emoji ocupa duas colunas. Um par de indicadores regionais (uma bandeira) é um cluster de duas colunas. Sequências com joiner de largura zero permanecem um cluster em vez de empilhar larguras.

Quanto custa o preenchimento por largura visual?

A ferramenta do navegador é gratuita e roda localmente.

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/str/pad-visual-width

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/str/pad-visual-width \
  -H "Authorization: Bearer $KIT_KEY" \
  -H "Content-Type: application/json" \
  -d '{"text":"東京","width":8,"side":"right"}'
{
  "text": "東京",
  "width": 8,
  "side": "right"
}
{
  "task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
  "type": "str.pad_visual_width",
  "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.

max_chars65536
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.

Quando o texto já é mais largo que o alvo, a requisição falha com invalid_input em vez de truncar seus dados em silêncio.

O que você envia e o que recebe de volta

Texto vazio é permitido e produz uma string de preenchimento puro da largura pedida. O char opcional é um único code point cuja própria largura visual é exatamente uma coluna e o padrão é um espaço ASCII; um espaço de largura completa ou um emoji de preenchimento é rejeitado porque um preenchimento de duas colunas não acerta um orçamento restante ímpar. Números e booleanos em text são convertidos para strings decimais ou true/false; objetos e arrays são rejeitados. Checagem clássica: o topônimo japonês de dois caracteres 東京 tem largura visual quatro, então preenchê-lo à direita até width oito com espaços produz 東京 mais quatro espaços; preencher à esquerda o ASCII quarenta e dois até width seis com zero ainda produz 000042, igual ao pad comum para entrada só latina. Envie os campos obrigatórios text, width e side, mais o char opcional. Text é a célula a preencher; os aliases input, value, data, s, message, string, content e body são aceitos. Width é a contagem-alvo de colunas visuais, um inteiro não negativo; os aliases target, columns, size e n funcionam quando width é omitido. Side deve ser left, right ou both, com aliases start ou l, end ou r, e center ou c. Texto maior que o teto documentado de caracteres, ou um width acima do máximo documentado, falha com invalid_input. Em caso de sucesso, a resposta ecoa text, width, side e char, mais result com a string preenchida, original_length e length como comprimentos de string JavaScript, original_visual_width e visual_width como contagens de colunas, pad_count, pad_left, pad_right e operation igual a pad_visual_width. O preço das chamadas API bem-sucedidas é a base publicada de US$ 0,002 por item; falhas de validação, inclusive um alvo abaixo da largura visual atual, não são cobradas.

Onde o preenchimento por largura visual aparece no trabalho real

Como esta capacidade é um motor parse puro, cada chamada bem-sucedida custa o preço-base publicado de US$ 0,002, sem tokens de modelo e sem rede de saída, e a validação falha sem consumir saldo.

Ver a documentação completa do KIT →