テキストインバーター:文字を瞬時に反転させる
テキストインバーターは、最大1万文字までの任意の文字列を1文字ずつ反転させる無料オンラインツールです。絵文字やアクセント記号、さまざまな文字体系をそのまま保持しながら文字の順序を逆転させることができ、回文かどうかの確認や、鏡文字風のテキスト作成、SNS投稿の遊びにも使えます。
テキスト反転ツール
以下に任意のテキストを入力または貼り付けると、文字の順序をすぐに反転させることができます。入力中にリアルタイムで結果を確認できます。
ドキュメンテーション
テキスト反転ツールとは?
テキスト反転ツールは、テキストの文字の順序を逆にするツールです。「hello」と入力すると「olleh」になります。入力の最後の文字から最初の文字まで、すべての文字を逆向きに並べます。逆向きのテキストを作ったり、単語が回文かどうかを調べたり、プログラミングにおける文字列反転の仕組みを学んだりするために使われます。
テキスト反転ツールの使い方
- 入力欄にテキストを入力または貼り付けます。
- 入力を止めると、反転したテキストがすぐ下に表示されます。ボタンを押す必要はありません。
- コピーのボタンを押して結果をコピーします。
リセットボタンを押すと、入力と結果の両方が消去されます。このツールで受け付けられるのは最大10,000文字です。それを超える入力では、テキストを短くするよう求めるエラーメッセージが表示されます。文字数は画面上で見える文字単位で数えるため、コンピューター内部では複数の単位として保存される絵文字も1文字として数えられます。
テキスト反転の公式
という文字で構成された長さ n の文字列では、反転した文字列は次のようになります。
簡単に言えば、最後の文字が最初の文字になり、最後から2番目の文字が2番目になり、最初の文字が最後になるまでこの手順を続けます。
アルゴリズムの仕組み:手順
- 空の結果から始めます。
- 入力の最後の文字を取り出し、結果に追加します。
- 最後から二番目の文字を取り出して追加します。
- すべての文字が逆順で追加されるまで繰り返します。
多くの反転ツールは、コンピューター上の個々の文字単位を処理します。一方、このツールは反転する前に、各絵文字、国旗、アクセント付き文字を1つの単位としてまとめます。これは書記素クラスタ分割と呼ばれる方法です。以下では、これが重要な理由を説明します。
計算例
入力:Hello, World!
反転後:!dlroW ,olleH
コンマ、空白、感嘆符を含むすべての文字は、それぞれの特徴を保ちます。変わるのは順序だけです。
絵文字、アクセント、その他のUnicode文字の処理
コンピューターでは、絵文字やアクセント付きの文字など、画面上では1文字に見える文字が、コードポイントと呼ばれる複数の小さな単位として保存されることがあります。それらが一緒に属しているかどうかを考慮せず、単位ごとに反転する方法では、1つの文字が分解されることがあります。
たとえば、「Hello 👍」には、2つの隠れた単位から構成された親指を立てた絵文字が含まれています。単位ごとに反転する基本的な方法では、その2つが分離し、絵文字ではなく壊れた記号になることがあります。このツールは、各絵文字、国旗、アクセント付き文字を1つの単位として扱うことで、この問題を避けます。そのため、「Hello 👍」は正しく「👍 olleH」になります。国コードを表す2つの隠れた記号から構成される国旗の絵文字もそのまま保持され、「🇺🇸 USA」は国旗を分割せずに「ASU 🇺🇸」へ反転されます。
主な用途
- 回文の判定:回文は、前から読んでも後ろから読んでも同じになる語で、「racecar」などがその例です。単語とその反転結果を比較することで、回文かどうかを判定できます。
- コーディングの学習:文字列の反転は、ループ、配列、スタックの練習に使われる一般的な課題です。
- 言葉遊びとパズル:パズルや脱出ゲームでは、メッセージを隠すために反転した単語が使われます。
- デザイン効果:鏡像ロゴや視覚効果のためにテキストを反転するデザイナーもいます。
- デバッグ:順方向のテキストと反転したテキストを比較すると、特定のデータエラーを見つけやすくなることがあります。
文字の反転と単語の反転
この2つの操作は、よく混同されます。
- 文字の反転(このツールが行う処理):すべての文字を反転します。"Hello World"は"dlroW olleH"になります。
- 単語の反転:各単語はそのままにして、単語同士の順序を変えます。"Hello World"は"World Hello"になります。
短い歴史
反転文字や鏡文字は、コンピューターより数千年も前から存在していました。古代ギリシャの碑文には、牛が畑を耕す動きに似て、行ごとに左から右、次に右から左へと方向を交互に変える牛耕式という書式が使われているものがあります。レオナルド・ダ・ヴィンチは、鏡にかざしたときにしか読めない鏡文字で、ノートの多くを書きました。これが秘密を守るためだったのか、左利きの書き手として書きやすかったからなのか、インクのにじみを防ぐためだったのかについては、現在も歴史家の間で議論があります。
コンピューティングでは、文字列の反転はコンピューターサイエンスの初期から標準的なプログラミング演習でした。文字をスタックに積み、取り出すと順序が自動的に逆になるため、スタックや配列の仕組みを教える際によく使われます。
コードでテキストを反転する方法
ほとんどのプログラミング言語には、文字列を反転する組み込み機能または簡単な方法があります。
1text = "Hello, World!"
2print(text[::-1]) # !dlroW ,olleH
31const text = "Hello, World!";
2console.log([...text].reverse().join('')); // !dlroW ,olleH
3どちらの例も、通常の文字や数字、および🌍のような単一単位の絵文字については、テキストを正しく反転します。ただし、一部の国旗の絵文字、別のアクセント記号を組み合わせて入力したアクセント付き文字、特殊な接続文字で結合された家族の絵文字など、複数の隠れた単位から構成される文字は分割されることがあります。このツールが使う、書記素を安全に扱う完全な反転には、JavaScriptのIntl.Segmenterのような専用の関数が必要です。
処理性能
テキストの反転にかかる時間は線形です。アルゴリズムは各文字をちょうど一回調べるため、入力が二倍になると処理量もおよそ二倍になります。単語一つから数ページ程度までの通常のテキストなら、結果は実質的に瞬時に表示されます。メガバイト単位以上の非常に大きなファイルは、すべてを一度にメモリへ読み込まず、データをストリーム処理する専用プログラムで扱うほうが適しています。
よくある質問
オンラインでテキストを反転するには?
上の入力欄にテキストを貼り付けるか入力します。入力を止めると、反転したテキストが自動的に表示されます。コピーのボタンを使って結果をコピーします。
テキストの長さに上限はありますか?
はい。このツールで受け付けられるのは最大10,000文字です。これを超える入力では、結果の代わりにエラーメッセージが表示されます。文字は画面上での見た目に基づいて数えられるため、絵文字やアクセント付き文字も2文字ではなく1文字として数えられます。
単語を反転するのですか、それとも文字だけですか?
単語の順序ではなく、個々の文字を反転します。"Hello World"は"dlroW olleH"になり、"World Hello"にはなりません。
絵文字や英語以外のテキストにも対応していますか?
はい。絵文字、国旗、アクセント付き文字を1つの単位として扱うため、反転後も分割されません。中国語、アラビア語、キリル文字など、あらゆる文字体系にも対応しています。
テキストを2回反転すると、元に戻りますか?
はい。反転した文字列をもう一度反転すると、元のテキストに戻ります。この性質は対合と呼ばれます。
反転したテキストは暗号化に役立ちますか?
いいえ。文字の反転に安全性はありません。テキストを見た目上隠すだけなので、反転し直せば誰でも読めます。
参考文献
- The Unicode Consortium. Unicode Standard Annex #29: Unicode Text Segmentation.
- Cormen, T. H., Leiserson, C. E., Rivest, R. L., & Stein, C. (2009). Introduction to Algorithms(3版). MIT Press.
- MDN Web Docs. Intl.Segmenter. Mozilla Developer Network.