Contar caracteres de tabulación
Un fragmento de código de tres líneas con una línea sangrada muestra 1 tabulación en 1 línea. Solo cuentan las tabulaciones reales, nunca cuatro espacios ni un espacio de no separación, así detecta sangrías mezcladas o separadores de hoja de cálculo. Gratis en su navegador.
- Gratis
- Funciona en su navegador
- Sin registro
- Sus datos no salen de su equipo
Ejecutar — gratis
Ejemplo resuelto
- Texto
- function f() { return 1; }
- Tabulaciones
- 1
- Líneas con tabulaciones
- 1
- Longitud
- 27
- Sin tabulaciones
- 26
Esta herramienta para contar caracteres de tabulación mide cualquier cadena de texto no vacía e indica cuántos caracteres de tabulación horizontal (Unicode U+0009, el familiar backslash-t) aparecen en cualquier lugar del contenido. Desarrolladores, ingenieros de datos, editores y docentes usan un conteo preciso de tabulaciones cada día para detectar sangría mixta antes de un lint, para comprobar que un pegado desde una hoja de cálculo aún lleva separadores de campo, y para bloquear importaciones que no deben contener caracteres de control invisibles. El motor es totalmente determinista: recorre la cadena una sola vez, cuenta solo unidades de código de tabulación reales, y nunca llama a la red, muestrea aleatoriedad ni depende del reloj. Los espacios, los espacios de no separación y otros espacios en blanco Unicode se ignoran en el total de tabulaciones, de modo que una guía de estilo que prohíbe tabulaciones puede rechazar una muestra con confianza.
Qué significa contar tabulaciones y qué contiene la respuesta
Contar tabulaciones responde a una pregunta de producto acotada: cuántos caracteres de tabulación horizontal hay en esta cadena exacta, y en cuántas líneas aparecen. Aquí una tabulación significa solo Unicode U+0009, el carácter único que produce la tecla Tab y la secuencia de escape backslash-t en el código fuente. Cuatro espacios ordinarios nunca se cuentan como una tabulación, un espacio de no separación nunca se cuenta como tabulación, y tampoco se cuentan un tabulador vertical ni un salto de página.
Esa definición estrecha mantiene la métrica estable entre editores, sistemas operativos e idiomas, y coincide con lo que la mayoría de las guías de estilo quieren decir al prohibir tabulaciones. No hay opción de tratar cuatro espacios como una tabulación, ni modo que expanda tabulaciones a columnas, ni conversión silenciosa de null en un éxito vacío.
Dónde encajan los conteos de tabulaciones en revisión de código, importación de datos y docencia
Los estudiantes se encuentran con el conteo de tabulaciones cuando un laboratorio de estilo de código prohíbe la sangría mixta, cuando un ejercicio de entrada de datos pega muestras TSV, o cuando una exportación de hoja de cálculo debe comprobarse antes de un script de calificación. Los docentes pueden pregenerar claves de respuesta que muestren el total esperado de tabulaciones sin confiar en macros de oficina opacas que expanden u ocultan caracteres de control de forma distinta en cada máquina.
Los equipos de datos y operaciones miden fragmentos ruidosos de tickets, líneas de registro y volcados similares a CSV cuando una canalización debe rechazar archivos que aún contienen separadores de tabulación tras una migración solo a espacios. El personal de soporte pega un fragmento del cliente para confirmar si tabulaciones invisibles están rompiendo un analizador.
Combínela con conversión de tabulaciones a espacios, eliminación de espacios en blanco o conteo de caracteres cuando construya un pequeño laboratorio de ayudantes de texto gratuitos y deterministas para formularios, preparación de CMS e higiene de datos.
Qué puede hacer con ella
Auditorías de sangría mixta
Cuente tabulaciones en un fragmento de código antes del lint o del formateo para que las guías solo-espacios fallen muestras que aún ocultan caracteres de tabulación.
Comprobaciones de pegado TSV y hojas de cálculo
Verifique cuántos separadores de campo por tabulación quedan en datos tabulares pegados antes de importar, ETL o scripts de calificación.
Preguntas frecuentes
¿Cuánto cuesta la herramienta para contar caracteres de tabulación?
Es gratuita en su navegador en esta página.
¿Qué caracteres cuentan como tabulaciones?
Solo el carácter de tabulación horizontal Unicode U+0009 (la tecla Tab / backslash-t). Los espacios, los espacios de no separación y otros espacios en blanco no se cuentan como tabulaciones.
¿Qué ocurre si el campo text está vacío?
Debe proporcionar una cadena no vacía; los campos de formulario en blanco no se convierten en éxitos silenciosos de cero.
¿Convierte esta herramienta las tabulaciones en espacios?
No. Solo cuenta tabulaciones horizontales. Use un convertidor dedicado de tabulaciones a espacios si necesita expansión a un ancho fijo de tabulación.
¿El resultado es el mismo cada vez?
Sí. El conteo es un recorrido de cadena puro y determinista, sin red, aleatoriedad ni dependencia del reloj, así que la misma entrada siempre produce la misma salida.
Herramientas relacionadas
Para desarrolladores — acceso por API
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.
Endpoint de API
¿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.
Llámela desde su stack
curl -X POST https://api.kit.forhosting.com/str/count-tabs \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"text":"function f() {\n\treturn 1;\n}"}'const res = await fetch("https://api.kit.forhosting.com/str/count-tabs", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"text": "function f() {\n\treturn 1;\n}"
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/str/count-tabs",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"text": "function f() {\n\treturn 1;\n}"
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/str/count-tabs", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"text":"function f() {\\n\\treturn 1;\\n}"}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"text":"function f() {\n\treturn 1;\n}"}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/str/count-tabs", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Ejemplo de solicitud
{
"text": "function f() {\n\treturn 1;\n}"
}Ejemplo de respuesta
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "str.count_tabs",
"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.
Precio
Precio publicado — sin tokens ni créditos inventados. Una tarea fallida no se cobra.
Límites
max_chars | 100000 |
Errores
| HTTP | Código | Significado |
|---|---|---|
401 | unauthorized | API key ausente o inválida. |
402 | insufficient_balance | El saldo no cubre el precio de la tarea. |
404 | unknown_type | El tipo de tarea no existe. |
429 | rate_limited | Demasiadas peticiones. Use el webhook en vez de sondear. |
Notas técnicas
La entrada vacía se rechaza con un error claro invalid_input para que un campo de formulario en blanco no se convierta en un éxito silencioso de cero. Úsela gratis en el navegador para auditorías rápidas y tareas, o llame a la API a $0.002 por solicitud exitosa cuando necesite conteos reproducibles en CI, canalizaciones o demostraciones docentes.
Qué significa contar tabulaciones y qué contiene la respuesta
La respuesta es deliberadamente pequeña y estable: text repite la entrada para que pueda auditar lo medido, tabs es el total entero de unidades de código U+0009, has_tabs es true cuando ese total es mayor que cero, lines_with_tabs cuenta cuántas líneas (divididas por CR, LF o CRLF) contienen al menos una tabulación, length es la longitud completa de caracteres de la cadena, non_tabs es length menos tabs, y method es la etiqueta fija count_tabs para registros y canalizaciones de varias herramientas. El motor construye métricas enteras completas dentro del largo admitido o rechaza la solicitud con invalid_input. Los casos rechazados incluyen un campo text ausente, un valor null, una cadena vacía, objetos y arreglos que no son texto plano, y cualquier carga útil más larga que el máximo de caracteres documentado.
Cómo se lee el campo text y cómo se mantienen reproducibles los conteos
El valor debe ser una cadena no vacía; los números finitos y los bigints se convierten primero a cadena, de modo que un código de producto escrito como número sigue produciendo una cadena de dígitos estable que, por definición, tiene cero tabulaciones. El conteo usa un solo recorrido lineal con igualdad estricta frente al carácter de tabulación: sin diccionario de red, sin modelo de aprendizaje automático y sin tablas de configuración regional. El campo preferido es text, pero se aceptan los alias input, string, value, content y s para que cadenas de consulta, hojas de cálculo y formularios tipados reutilicen el mismo contrato sin renombrar columnas. Los booleanos, los objetos planos y los arreglos se rechazan con un mensaje claro para que un cuerpo JSON equivocado no se convierta en la palabra true ni en un volcado de objeto inútil. Una cadena vacía siempre es invalid_input: la promesa del producto es contar tabulaciones en el texto, no inventar un éxito de cero para un envío en blanco. Los espacios exteriores no se recortan a propósito; si envía dos espacios, una palabra y dos espacios, esos espacios exteriores contribuyen a length y non_tabs pero nunca a tabs, lo que mantiene honestas las pruebas doradas y las canalizaciones de copiar y pegar. La longitud está limitada a cien mil caracteres para que un pegado desbocado no monopolice un Worker; las cargas más largas fallan con un mensaje explícito de límite en lugar de un recorte silencioso. Las líneas se dividen con una regla fija CR, LF o CRLF, de modo que un archivo de Windows y uno de Unix reportan el mismo lines_with_tabs para el mismo contenido visual. Combine la ejecución gratuita en el navegador de esta página con la API de pago cuando necesite los mismos conteos dentro de una canalización automatizada sin enviar sus propios escáneres.
Dónde encajan los conteos de tabulaciones en revisión de código, importación de datos y docencia
En esta página el trabajo se ejecuta enteramente en su navegador; a través de la API cada conteo exitoso cuesta $0.002, la validación fallida no se cobra y no se guarda nada después de devolver la respuesta. Esa división —exploración interactiva gratuita y una API de pago idéntica— coincide con el resto del catálogo de nivel A del KIT y le permite pasar de una demostración de aula a una canalización automatizada sin cambiar el resultado numérico.
Casos de integración
Fixtures deterministas de CI
Genere totales de tabulaciones reproducibles para pruebas unitarias, archivos dorados y puertas de canalización que no deben inventar reglas de espacio en blanco.