ForHosting KIT · Texto e IA

Rellenar al ancho monoespaciado

Alinee columnas que mezclan texto latino y de Asia oriental: 東京 ocupa 4 columnas, así que al rellenarlo hasta 8 solo se añaden 4 espacios, no 6. Los caracteres anchos y la mayoría de los emojis cuentan como dos columnas. Gratis en su navegador.

  • Gratis
  • Funciona en su navegador
  • Sin registro
  • Sus datos no salen de su equipo
Úselo desde WebAPIEmailTelegramApp pronto
Si escribe
Texto
東京
Ancho
8
Lado
Right
Obtiene
Resultado
東京
Carácter
Longitud original
2
Ancho visual original
4

Rellenar una cadena para que las columnas queden alineadas en una terminal es un problema de ancho visual, no de recuento de caracteres. Los ideogramas de Asia oriental, las sílabas hangul, las letras latinas de ancho completo y la mayoría de los emoji ocupan dos columnas en una fuente monoespaciada, mientras que las marcas combinantes, los selectores de variación y los unidores de ancho cero no ocupan ninguna. Un relleno basado en la longitud de JavaScript desalinea cualquier celda que mezcle latín con japonés, chino o coreano. Esta herramienta mide columnas de visualización al estilo East Asian Width e inserta un carácter de relleno de una sola columna a la izquierda, a la derecha o en ambos lados hasta alcanzar el número de columnas objetivo.

Cómo se mide el ancho visual de columna

En una terminal monoespaciada habitual, cada letra, dígito y signo de puntuación ASCII ocupa una columna. Ese modelo mental se rompe en cuanto la cadena contiene un carácter cuyo East Asian Width es Wide o Fullwidth. Los ideogramas unificados CJK, las sílabas hangul, los dígitos de ancho completo (las formas ideográficas del cero al nueve) y el bloque latino de ancho completo ocupan dos columnas cada uno.

Las marcas combinantes de categoría Mn o Me, los caracteres de formato, las vocales mediales y consonantes finales jamo del hangul, los selectores de variación y el unidor de ancho cero ocupan cero columnas y se adhieren al grafema precedente. Los pares de indicadores regionales que forman un emoji de bandera se tratan como un único clúster de dos columnas, y los emoji unidos con un unidor de ancho cero permanecen en un clúster de ancho dos en lugar de apilar pictogramas independientes.

Los caracteres de ancho ambiguo, como las letras griegas y algunos símbolos, siguen el convenio POSIX y occidental y cuentan como una columna, lo que coincide con la mayoría de las terminales Linux y macOS fuera de una configuración regional de Asia oriental. Se rechazan los caracteres de control, incluidos el tabulador y el salto de línea: el ancho del tabulador no es una propiedad de la cadena, y esta herramienta rellena una celda, no una tabla entera.

El algoritmo recorre puntos de código Unicode, nunca pares sustitutos UTF-16, de modo que un solo emoji fuera del Basic Multilingual Plane es un carácter, no dos. El resultado es el mismo recuento de columnas que obtendría con una medición conservadora al estilo wcwidth, exactamente lo que necesita antes de añadir caracteres de relleno para que un nombre japonés y un SKU latino compartan un borde derecho recto.

Dónde aparece el relleno por ancho visual en el trabajo real

Quienes escriben CLI, formateadores de registro y cualquiera que imprima una tabla en fuente monoespaciada tropiezan con este problema la primera vez que un valor japonés, chino o coreano cae en una columna dimensionada con la longitud de la cadena. Los números de factura se sientan junto a nombres de producto; un nombre CJK que tiene dos caracteres JavaScript ocupa cuatro columnas de terminal y empuja la columna de precio hacia la derecha.

Las tablas Markdown, los tableros de estado de un README y las impresoras térmicas de recibos tienen la misma restricción cuando una celda mezcla escrituras. Las canalizaciones de datos que emiten ficheros de exportación de ancho fijo para mercados de Asia oriental no pueden usar un relleno por recuento de caracteres sin romper el diseño que espera el analizador bancario o de mainframe de destino.

Prefiera esta página cuando la intención de búsqueda sea rellenar al ancho monoespaciado, ancho visual, East Asian Width, wcwidth o alinear columnas CJK en una terminal. El relleno izquierdo o con ceros de identificadores ASCII es otra consulta y corresponde a la herramienta de pad por recuento de caracteres; esta página atiende el problema de alineación de columnas que solo aparece cuando entran caracteres anchos en la celda.

Alinear celdas CJK en tablas de terminal

Rellene a la derecha celdas mixtas de latín y japonés, chino o coreano hasta un ancho visual común para que las columnas de precio y estado queden rectas en la salida CLI.

Campos de exportación de Asia oriental a ancho fijo

Rellene con espacios nombres de producto y direcciones hasta el presupuesto de columnas que espera un fichero legado de ancho fijo, contando los caracteres de ancho completo como dos columnas.

Centrar banners de escrituras mixtas

Rellene ambos lados de un título corto que contiene CJK o emoji para que una línea de recibo o una cabecera de registro monoespaciada quede centrada a la vista.

¿En qué se diferencia esto del relleno ordinario de cadenas?

El pad ordinario cuenta caracteres JavaScript. Esta herramienta cuenta columnas visuales monoespaciadas, de modo que 東京 tiene ancho 4, no 2, y las columnas siguen alineadas cuando latín y CJK comparten una fila.

¿Qué ocurre si el texto ya es más ancho que el objetivo?

Esta herramienta nunca trunca; el ancho objetivo debe ser mayor o igual que el ancho visual medido.

¿Puedo rellenar con un espacio de ancho completo o un emoji?

No. El carácter de relleno debe ocupar exactamente una columna visual. Use un espacio ASCII, 0, un guion u otro glifo estrecho.

¿Cómo se cuentan los emoji y las banderas?

La mayoría de los emoji ocupan dos columnas. Un par de indicadores regionales (una bandera) es un clúster de dos columnas. Las secuencias con unidor de ancho cero permanecen en un clúster en lugar de apilar anchos.

¿Cuánto cuesta el relleno por ancho visual?

La herramienta del navegador es gratuita y se ejecuta en local.

Todo lo de esta página está disponible por programación. Esta sección es para equipos que quieren integrarlo en sus sistemas; el resto puede usar la herramienta de arriba sin más.

POSThttps://api.kit.forhosting.com/str/pad-visual-width

¿Prefiere automatizarlo? Un POST autenticado crea la tarea; el resultado llega por webhook o enlace firmado. La misma capacidad también se ejecuta aquí en la web, por email y desde Telegram — y pronto también desde nuestra app.

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"
  }
}

La API es asíncrona: la llamada devuelve un task_id al instante y el resultado llega por webhook. El polling está limitado a 1 req/s por tarea.

Por solicitud$0.002

Precio publicado — sin tokens ni créditos inventados. Una tarea fallida no se cobra.

max_chars65536
HTTPCódigoSignificado
401unauthorizedAPI key ausente o inválida.
402insufficient_balanceEl saldo no cubre el precio de la tarea.
404unknown_typeEl tipo de tarea no existe.
429rate_limitedDemasiadas peticiones. Use el webhook en vez de sondear.

Cuando el texto ya es más ancho que el objetivo, la solicitud falla con invalid_input en lugar de truncar sus datos en silencio.

Qué se envía y qué se recibe

El texto vacío está permitido y produce una cadena de relleno puro del ancho solicitado. El char opcional es un solo punto de código cuyo propio ancho visual es exactamente una columna y por defecto es un espacio ASCII; se rechaza un espacio de ancho completo o un emoji de relleno porque un relleno de dos columnas no puede alcanzar un presupuesto restante impar. Los números y booleanos de text se convierten a cadenas decimales o true/false; se rechazan objetos y matrices. Comprobación clásica: el topónimo japonés de dos caracteres 東京 tiene ancho visual cuatro, así que rellenarlo a la derecha hasta width ocho con espacios produce 東京 más cuatro espacios; rellenar a la izquierda el ASCII cuarenta y dos hasta width seis con cero sigue produciendo 000042, igual que un pad ordinario para una entrada solo latina. Envíe los campos obligatorios text, width y side, más el char opcional. Text es la celda a rellenar; se aceptan los alias input, value, data, s, message, string, content y body. Width es el recuento objetivo de columnas visuales, un entero no negativo; los alias target, columns, size y n funcionan cuando se omite width. Side debe ser left, right o both, con alias start o l, end o r, y center o c. Un texto más largo que el tope documentado de caracteres, o un width por encima del máximo documentado, falla con invalid_input. En caso de éxito, la respuesta devuelve text, width, side y char, más result con la cadena rellenada, original_length y length como longitudes de cadena JavaScript, original_visual_width y visual_width como recuentos de columnas, pad_count, pad_left, pad_right y operation igual a pad_visual_width. El precio de las llamadas API correctas es la base publicada de $0.002 por ítem; los fallos de validación, incluido un objetivo por debajo del ancho visual actual, no se facturan.

Dónde aparece el relleno por ancho visual en el trabajo real

Como esta capacidad es un motor parse puro, cada llamada correcta cuesta el precio base publicado de $0.002, sin tokens de modelo y sin red de salida, y la validación fallida no consume saldo.

Ver la documentación completa del KIT →