Outil d'inversion de chaîne
Inverser rapidement les chaînes de texte avec plusieurs modes d'inversion
Sélectionner le mode d'inversion
Qu'est-ce que l'inversion de chaîne ?
String Reverse inverse l’ordre des caractères d’un texte et produit l’entrée à l’envers. L’idée paraît simple, mais le texte réel est plus subtil que des lettres ASCII: caractères Unicode, emoji, accents combinants, retours à la ligne, espaces et écritures de droite à gauche peuvent réagir différemment selon la façon de compter les caractères. L’outil sert aux expériences textuelles, vérifications de palindrome, petits jeux, débogage de chaînes, enseignement et repérage d’espaces ou suffixes cachés. Ce n’est pas une méthode de chiffrement ni un masquage sûr de données sensibles. Avec des emoji composés ou plusieurs code points, la sortie doit être vérifiée.
Mode d'emploi
Opérations de base
- Saisissez ou collez le texte à inverser dans la zone de saisie de gauche.
- Choisissez un mode d'inversion (tout inverser, inverser les mots, etc.).
- Le résultat inversé s'affiche automatiquement à droite.
- Cliquez sur « Copier » pour copier le résultat, ou sur « Intervertir » pour l'utiliser comme nouvelle entrée.
Traitement du texte
- Inverser du texte brut est simple, mais les émojis, les signes diacritiques combinatoires et les écritures de droite à gauche peuvent donner un rendu visuel inattendu.
- Pour du code, des URL ou des données structurées, n'inversez que le segment concerné au lieu d'inverser tout le texte aveuglément.
Cas d’utilisation
Principe technique
L'inversion au niveau du caractère utilise la syntaxe spread : [...str].reverse().join(''). L'opérateur spread itère la chaîne comme une séquence de points de code Unicode, ce qui gère correctement les caractères en dehors du plan multilingue de base qui occupent deux unités de code UTF-16 (paires de substitution). L'alternative naïve, str.split('').reverse().join(''), découpe en unités de code et corrompt tout emoji comme le party popper 🎉 (U+1F389), la fusée 🚀 (U+1F680) ou tout caractère supérieur à U+FFFF. Les clusters de graphèmes ajoutent une couche supplémentaire. Un caractère perçu par l'utilisateur comme le café avec un accent aigu combinant (a + ◌́), un emoji drapeau construit à partir de deux indicateurs régionaux, ou un emoji familial lié par ZWJ 👨👩👧 est composé de plusieurs points de code. L'inversion par point de code réarrange toujours les morceaux, de sorte que l'emoji familial devient trois silhouettes humaines séparées et l'accent se détache de la lettre de base. Intl.Segmenter avec granularity: 'grapheme' est la méthode conforme aux standards pour itérer les clusters de graphèmes et conserver ces séquences intactes lors de l'inversion. Au niveau de l'opération, le coût est O(n) en nombre de segments, où n est la longueur de la chaîne en points de code ou en graphèmes selon la segmentation choisie. Inverser deux fois donne la chaîne d'origine, ce qui rend la fonction utile pour les vérifications de palindrome. Pour les entrées riches en Unicode, la normalisation NFC (str.normalize('NFC')) avant l'inversion replie les séquences base + combinante en formes précomposées lorsqu'il en existe une, réduisant les surprises dans le résultat. Les écritures de droite à gauche comme l'arabe et l'hébreu sont stockées en ordre logique mais rendues de droite à gauche, de sorte qu'une chaîne arabe inversée apparaît quand même inversée bien que l'ordre des données ait été modifié.
- Inversion par point de code : [...str].reverse().join('') itère par point de code et préserve les paires de substitution au-dessus de U+FFFF (la plupart des emoji)
- Piège naïf des octets : str.split('').reverse().join('') découpe les unités de code UTF-16 et corrompt tout caractère supérieur à U+FFFF
- Clusters de graphèmes : Intl.Segmenter({ granularity: 'grapheme' }) conserve les marques combinantes, les séquences de drapeaux et les emoji ZWJ 👨👩👧 intacts
- Inversion au niveau du mot : split(/\s+/), reverse, join(' ') ; préserve chaque mot en interne et n'inverse que l'ordre
- Complexité : O(n) où n est le nombre de segments ; inverser deux fois renvoie la chaîne d'origine
- Normalisation NFC : str.normalize('NFC') replie les séquences combinantes en formes précomposées avant l'inversion lorsqu'il en existe une
- Texte bidi : l'arabe et l'hébreu sont stockés en ordre logique ; la direction rendue est la couche BiDi du navigateur, séparée de l'inversion des données
Exemples
Inverser tous les caractères (basique)
Mode : Inverser tout
Entrée : hello world
Sortie : dlrow olleh
Entrée : 12345
Sortie : 54321
Entrée : A man a plan a canal Panama
Sortie : amanaP lanac a nalp a nam AInverser les mots vs inverser chaque mot
Entrée : The quick brown fox
Mode : Inverser les mots (ordre des mots uniquement)
-> fox brown quick The
Mode : Inverser chaque mot (lettres dans chaque mot)
-> ehT kciuq nworb xofVérification de palindrome
Entrée : racecar
Inverser tout -> racecar (identique, est un palindrome)
Entrée : level
Inverser tout -> level (palindrome)
Entrée : hello
Inverser tout -> olleh (PAS un palindrome)Sécurité Unicode et emoji
Entrée : cafe (avec accent aigu combiné sur e)
Inversion naïve : efac (l'accent se détache de la lettre)
Sensible aux graphèmes : efac (l'accent reste attaché)
Entrée : séquence-emoji-famille-ZWJ
Inversion naïve : décomposée en 3 emojis distincts
Cet outil : conserve le cluster intactInverser l'ordre des lignes dans un fichier journal
Mode : Inverser l'ordre des lignes
Entrée :
2026-06-10 09:00 startup
2026-06-10 09:05 login ok
2026-06-10 09:10 query slow
Sortie (plus récent en premier) :
2026-06-10 09:10 query slow
2026-06-10 09:05 login ok
2026-06-10 09:00 startupFAQ
Que fait l'inversion de chaîne ?
Elle retourne l'entrée avec les caractères en ordre inverse : « hello » → « olleh ». Utile pour des chiffres jouets de type ROT-13, vérifier des palindromes, générer du texte miroir, ou faire des démos rapides de manipulation de tableaux dans des tutoriels.
Inverse-t-elle correctement les emojis et le CJK ?
La plupart des caractères CJK et des emojis simples fonctionnent correctement car la page utilise l'opérateur de propagation ([...text]) qui gère les paires de substitution UTF-16. Les séquences emoji complexes (emojis famille, drapeaux, combinaisons de teinte de peau) peuvent se briser à l'inversion car elles sont composées de plusieurs points de code séparés.
Que se passe-t-il avec les accents combinatoires ?
Les caractères formés d'une lettre de base plus des marques combinatoires (e + accent aigu → é) s'inversent comme un seul graphème. Une saisie en forme décomposée peut nécessiter une normalisation préalable ; la page peut appliquer une normalisation NFC en entrée pour gérer cela. Le résultat visible pour le langage naturel est correct dans les deux cas.
En quoi l'inversion diffère-t-elle d'une image miroir ?
L'inversion porte sur l'ordre des caractères : « AB » → « BA ». Le miroir est un retournement visuel : « AB » affiché comme ⟨ƎA⟩, ce qui requiert une transformation CSS ou des caractères spéciaux. La page inverse l'ordre des caractères, pas un miroir de pixels. Pour un effet de texte miroir, utilisez CSS scaleX(-1).
Préserve-t-elle les sauts de ligne ?
Par défaut, l'entrée entière est inversée, retours à la ligne compris : la dernière ligne se retrouve en premier. Activez « inverser chaque ligne individuellement » pour inverser à l'intérieur des lignes tout en conservant l'ordre des lignes, utile pour des effets visuels sur du texte multi-lignes.
Le texte inversé est-il toujours lisible ?
Les langues qui se lisent de gauche à droite (anglais, chinois, japonais) deviennent illisibles une fois inversées. Les langues de droite à gauche (arabe, hébreu) peuvent devenir maladroitement lisibles mais sont aussi cassées car l'algorithme bidi entre en conflit avec l'inversion. L'inversion est surtout un exercice de code ou de casse-tête, pas une vraie transformation textuelle.
Mon texte est-il envoyé ?
Non. L'inversion s'exécute dans votre navigateur. Le texte collé n'est pas transmis.