Command Palette

Search for a command to run...

Invertir una cadena en línea: cómo funciona esta herramienta, emoji y todo

Invertir una cadena en línea: cómo funciona esta herramienta, emoji y todo

T
Toolz Team
|Jul 9, 2026|11 Min Lectura

Parte de la colección Herramientas de texto

Cuerda de marcha atrás

Invierta cualquier cadena de texto al instante. Admite carga de archivos y carga de URL con la opción de inversión automática.

Usar Cuerda de marcha atrás

Envié la herramienta de cadena inversa en Toolz.dev pensando que era lo más aburrido que construí todo el mes. split('').reverse().join(''). Lo que podría salir mal. Luego pegué el texto de muestra I'd escrito - que, como me sentía lindo, terminaba con "Unicode: 你好世界 🌍🚀" - y la salida regresó con los dos emoji convertidos en cajas confusas. 🌍🚀 se convirtió \ude80🜍\ud83c. Los caracteres chinos se invirtieron perfectamente. El emoji se destrozó.

Esa sorpresa de cinco minutos es en realidad lo más útil que puedo enseñarte sobre cómo invertir cuerdas, por lo que toda esta guía se basa en ello. Invertir texto suena trivial, y para ASCII simple lo es. En el momento en que introduces emoji, banderas o ciertos caracteres acentuados, " invierte la cadena" deja de tener una respuesta obvia y la mayoría de las herramientas, incluida ésta, eligen silenciosamente la respuesta que las rompe.

los Cuerda de marcha atrás La herramienta hace una cosa: invierte los caracteres, al instante, mientras escribes. No hay modos para configurar, no hay registro, y su texto nunca sale del navegador. Déjame mostrarte exactamente lo que hace, dónde se rompe y cómo invertir el texto exactamente En código real cuando la rotura no es aceptable.

TL;Dr: Pegar texto en Cuerda de marcha atrás y cambia el orden de los personajes en vivo - Hello se convierte en olleH. Es un solo modo de inversión de caracteres (sin modos de palabra o línea separados), se actualiza automáticamente a medida que escribe y puede copiar o descargar el resultado. Es perfecto para controles de palíndromo, rompecabezas rápidos y verificar respuestas de entrevistas. Atención: como un JavaScript simple split(''), rompe emoji y banderas porque se divide por unidad de código. Texto plano y CJK Reverse Fine. emparejarlo con el Convertidor de caja investigaciones operacionales Contador de palabras para trabajos de texto rápido.

¿Qué hace realmente la herramienta de cuerda inversa?

Exactamente una operación: invierte el orden de los caracteres. El último personaje se convierte en el primero, y así sucesivamente.

Entrada: Hello World Salida: dlroW olleH

Debajo del capó, la lógica es genuinamente una línea, la misma línea que usted & #39;d escribió en una entrevista de JavaScript:

text.split('').reverse().join('')

No hay ningún modo "palabras inversas" o "líneas inversas" que se esconden en un menú. Los borradores anteriores de esta página describieron los modos de carácter, palabra, oración y línea; eso era aspiracional, no real. La herramienta invierte los caracteres, punto final. Se actualiza automáticamente a medida que escribe, por lo que ve el resultado invertido en vivo, y le da el número de caracteres y líneas de entrada y salida. Puede pegar texto, cargar un archivo de texto, cargar desde una URL, luego copiar el resultado o descargarlo como .txt.

Si desea específicamente la inversión del orden de las palabras (Hello WorldWorld Hello), harías eso en código con split(' ').reverse().join(' ')- I' Mostraré los fragmentos a continuación.

¿Por qué los emojis se rompen cuando los inviertes?

Esta es la parte que vale la pena entender, porque explica toda una clase de errores.

Las cadenas JavaScript son secuencias de UTF-16 Unidades de código, no "caracteres" en el sentido humano. La mayoría de los caracteres cotidianos (letras, dígitos, puntuación e incluso caracteres chinos, japoneses y coreanos) caben en una sola unidad de código de 16 bits. Entonces split('') Cortes entre ellos limpiamente y revertir los trabajos:

'你好世界'.split('').reverse().join('')  // → '界世好你'  ✅

Pero emoji, secuencias de bandera y algunos símbolos en vivo afuera ese rango y se almacenan como Pares suplentes- dos unidades de código que sólo significan algo juntas. split('') Felizmente los corta por la mitad, y al revés se mezclan las mitades en tonterías:

'AB🌍🚀'.split('').reverse().join('')  // → mojibake, the emoji shatter ❌

Las marcas de combinación son la otra trampa. Una letra acentuada se puede almacenar de dos maneras: como un punto de código precompuesto (é), o como una letra base más un acento combinado separado (e + ◌́). La versión precompuesta se invierte bien. La versión descompuesta desprende el acento, que flota y aterriza en la letra equivocada después de la reversión.

Así que la regla honesta para esta herramienta: El texto simple, los dígitos, la puntuación y el CJK se revierten correctamente; se romperán los emoji, los emojis de bandera y los acentos descompuestos. Eso'no es un defecto exclusivo de Toolz.dev - it's qué split('') hace en todas partes, y muchos sitios de "cadena inversa" se comportan de manera idéntica. Dejé la versión ingenua en su lugar deliberadamente porque es rápida, transparente y coincide con lo que la mayoría de la gente quiere decir cuando dice "arroja esto", pero mereces conocer el borde.

¿Cómo se invierte una cadena correctamente en el código?

Si estás escribiendo código real y asuntos Unicode, aquí está la escalera de ingenua a correcta.

Nivel 1 - ingenuo (lo que hace la herramienta): Rompe emoji.

str.split('').reverse().join('')

Nivel 2 - operador de extensión: itera por código punta, por lo que mantiene intactos la mayoría de los emoji (las parejas sustitutas permanecen juntas). Todavía se rompen las marcas descompuestas combinando marcas y secuencias multi-emoji como banderas.

[...str].reverse().join('')

Nivel 3 - consciente del grafema: Trate a cada "percepción de carácter percibido por el usuario" como atómico. Este es el enfoque genuinamente correcto.

const seg = new Intl.Segmenter('en', { granularity: 'grapheme' });
[...seg.segment(str)].map(s => s.segment).reverse().join('');

Intl.Segmenter Maneja emoji, banderas, modificadores de tono de piel y combina marcas correctamente. Es la versión que se envía en producción si la inversión de texto de usuario con emoji era un requisito real.

Aquí está la misma operación en todos los idiomas, para la práctica de la entrevista y la referencia:

# Python — [::-1] works by code point, similar to JS spread
reversed_str = original[::-1]
words_reversed = ' '.join(original.split()[::-1])
// Java — StringBuilder.reverse() is code-unit based (same emoji caveat)
String reversed = new StringBuilder(original).reverse().toString();
// Go — []rune iterates by code point, safer than byte reversal
runes := []rune(original)
for i, j := 0, len(runes)-1; i < j; i, j = i+1, j-1 {
    runes[i], runes[j] = runes[j], runes[i]
}
reversed := string(runes)
// PHP — strrev() is byte-based and mangles any multi-byte UTF-8
$reversed = strrev($original);          // breaks UTF-8

Observe el patrón: casi todos los idiomas "obvio" inverso están basados en código-unidad o byte y comparten la misma debilidad Unicode. La opción de alcanzar la opción de Grapheme-Aware es la excepción, no la predeterminada.

¿Para qué sirve realmente la inversión de cuerdas?

Más allá de ser el calentamiento de la entrevista canónica, se gana en algunos lugares.

Comprobaciones de palíndromo. Invierta la cadena y compárela con la original; si coinciden, es un palíndromo. Intentar racecar, level, o 12321 en la herramienta y ver la salida idéntica. Para frases palíndromos como &quot;Un hombre un plan a Panama de Canal'', desnudar espacios y cajas primero.

Verificando su propio código. Cuando estés moliendo problemas de reversión al estilo Leetcode, pega tu salida esperada en la herramienta para cordura en un segundo. Es un oráculo rápido para el caso de inversión de carácter.

Rompecabezas rápidos y texto lúdico. Mensajes al revés, juegos de palabras, publicaciones sociales especulares: hay poco en juego y la inversión es su propia inversa, por lo que invertir dos veces le devuelve el valor original. Esa propiedad es útil para realizar pruebas: revertir, revertir nuevamente, confirmarle&#39;Estoy en casa.

una cosa para no úselo para: seguridad. La reversión es un truco de fiesta, no cifrado - it&#39;s trivialmente deshecho. Aparece en principiante &quot;ofuscación&quot; tutoriales, pero nunca trate el texto invertido como protegido.

Tipo de inversión ejemplo en la herramienta? recorte de código
carácter abccba Sí (el único modo) [...s].reverse().join('')
letra a b cc b a No, hazlo en código s.split(' ').reverse().join(' ')
filigrana Orden de línea volteada No, hazlo en código s.split('\n').reverse().join('\n')
Seguro de grafema Emoji permanece intacto No, necesita Intl.Segmenter Ver nivel 3 arriba

El enfoque de dos puntos, si te estás preparando para las entrevistas

La razón por la que a los entrevistadores les encanta esta pregunta es que la respuesta elegante no usa un reverso incorporado en absoluto. Caminas dos consejos hacia el otro y cambias:

Original:  H E L L O
           i       j        swap H and O
           O E L L H
             i   j          swap E and L
           O L L E H
               ij           pointers meet — done

Se ejecuta en tiempo O(n) y, realizado en su lugar en una matriz mutable, O(1) espacio adicional. En JavaScript las cadenas son inmutables, por lo que puedes &#39;t literalmente se intercambia en su lugar, pero la lógica de dos puntos es lo que ellos &#39;re comprobando que entiendas. La versión recursiva - reverse(s) = last char + reverse(rest)- es más bonito pero utiliza espacio O(n) call-stack, que es la compensación que vale la pena mencionar en voz alta en la entrevista.

Y recuerda la propiedad que hace que las pruebas sean triviales: la inversión es su propia inversa. Invierte una cuerda dos veces y volverás a donde empezaste. Cuando pruebo un código de inversión de cualquier código de inversión, esa afirmación es el número uno: reverse(reverse(x)) === x para un lote de entradas que incluyen, especialmente, emoji, la prueba en realidad detecta el error del par sustituto en lugar de ocultarlo.

Preguntas frecuentes

¿La herramienta de cadena inversa admite la inversión de palabras o líneas?

prohibido . Tiene un solo modo que invierte los caracteres. No hay un modo de orden de palabra o de orden de línea separado. Si necesita invertir el orden de las palabras o líneas, hágalo en código con split(' ') investigaciones operacionales split('\n') seguido de .reverse().join(...).

¿Por qué los emojis salen confusos después de la reversión?

Porque la herramienta se invierte por la unidad de código UTF-16, como JavaScript split(''). Las secuencias de emoji y bandera se almacenan como pares sustitutos (dos unidades de código que sólo tienen sentido juntas) y la inversión las divide. El texto sin formato y los caracteres CJK son unidades de código único, por lo que se invierten correctamente.

¿Maneja unicode y texto CJK?

en parte Los caracteres acentuados chinos, japoneses, coreanos, cirílicos y precompuestos se revierten correctamente porque cada uno es una sola unidad de código. Emoji, emoji de bandera y marcas combinadas descompuestas se romperán. Para un manejo completamente correcto en su propio código, use Intl.Segmenter con granularidad de grafema.

¿Se envía mi texto a un servidor?

No. La inversión ocurre localmente en su navegador mientras escribe; el texto nunca se carga. Eso lo hace seguro para revertir cadenas confidenciales o privadas.

¿Cómo verifico si una palabra es un palíndromo?

revertirlo con el Cuerda de marcha atrás herramienta y compare con el original. Si son idénticos, es un palíndromo. Para frases, elimine espacios, puntuación y diferencias de casos antes de comparar - &quot; Un hombre planifica un canal Panamá&quot; es un palíndromo sólo después de normalizar.

¿Puede manejar texto muy largo?

Sí. Dado que se ejecuta en su navegador, el límite práctico es la memoria de su dispositivo, que cubre cómodamente millones de personajes. Se invierte en vivo mientras escribes, por lo que las pastas extremadamente grandes pueden parecer un poco menos instantáneas, pero no hay ningún viaje de ida y vuelta al servidor.

¿Por qué invertir una cadena es una pregunta de entrevista tan común?

Incluye muchos fundamentos en un pequeño problema: manipulación de matrices y cadenas, la técnica de dos punteros, compensaciones entre el lugar y la copia, recursividad y, si el entrevistador es agudo, casos de borde Unicode. Es fácil de iniciar y tiene suficiente profundidad para separar una respuesta rápida de una completa.

Herramientas relacionadas:

Frequently Asked Questions

No. It has a single mode that reverses characters. There's no separate word-order or line-order mode. If you need to reverse the order of words or lines, do it in code with split(' ') or split('\n') followed by .reverse().join(...).

Comments

0 comments

0/2000 characters

No comments yet. Be the first to share your thoughts!