piapia123
ja

テキスト逆順

テキスト

処理はすべてブラウザ内で完結します。データは送信されません

入力
ファイルをここにドロップすると読み込めます
出力

「逆順にする」という言い方は曖昧で、4 通りの解釈はそれぞれ別の結果になります。`abc` が `cba` になる(行内)、最初の行が最後になる(行順)、改行も含めて全体がひっくり返る(全体)、`one two` が `two one` になる(語順)。そこでこのツールは4 つの独立した選択肢を用意しています —— 1 つ間違えると貼り直しになるためです。 単位は符号単位ではなく書記素クラスタです。 `"👍🏽".length` は 4 で、肌色修飾子付きの絵文字は UTF-16 の符号単位を 4 つ使います。符号単位で逆順にすると孤立したサロゲートが 2 つ残り、画面には `��` が出ます。コードポイント単位でもサロゲートペアは直りますが、`👨‍👩‍👧` のような ZWJ 連結や基底文字+結合文字のアクセントは分断されたままです。このツールはブラウザ標準の書記素境界で切るので、「目に見える 1 文字」がそのまま 1 単位になります。 語順モードはレイアウトに触りません。 行頭・行末の空白と語間のすき間はその場に残り、動くのは語だけです。すべて逆にすると ` foo bar` は `bar foo ` になり、インデントが行末に取り残されます。

機能

  • 行内・全体・行順・語順の 4 モードが独立
  • 書記素クラスタ単位なので、絵文字・肌色修飾子・ZWJ 連結・結合文字が分断されない
  • 行内と語順のモードは行構造を保ち、行数が変わらない
  • 語順モードは行頭行末の空白と語間のすき間を保つ(インデントが行末に残らない)
  • 行順モードは行の並びだけを変え、行の中身には一切触れない
  • CRLF / CR / LF をすべて改行として扱い、出力は LF に統一
  • 空行も他の行と同じように扱われる(行順モードでは一緒に逆順になる)
  • 処理はすべてブラウザ内で完結し、内容は送信されません

使い方

  1. 逆順にしたいテキストを入力欄に貼り付けます
  2. 単位を選ぶと結果が即座に更新されます
  3. 「コピー」で結果を取り出します

よくある質問

「全体」と「行順」は何が違いますか?
行順は行の位置を入れ替えるだけで、行の中身は 1 文字も動きません:`abc / def` は `def / abc` になります。全体は改行も含めて 1 本の並びとして逆順にします:`abc\ndef` は `fed\ncba` になります。行数はどちらも変わりませんが、各行の中身が元の別の行のものになり、行末の改行の有無も反転します。「紙を 180 度回す」の文字通りの意味で、最も意外に感じられる挙動なので独立した選択肢にしています。
語順を逆にしたのにインデントが先頭に残るのはなぜですか?
入れ替えているのが文字ではなく語だからです。行を「語とすき間が交互に並ぶ列」に分解し、すき間はその位置に残したまま語だけを並べ直します。したがって ` foo bar ` は ` bar foo ` になり、先頭の 2 つの空白も行末の空白もそのままです。すき間ごと逆にするとインデントが行末に移り、「勝手にレイアウトを変えられた」という結果になります。
絵文字は壊れませんか?
壊れません。切る単位はブラウザ標準の書記素境界(`Intl.Segmenter` の grapheme)で、符号単位やコードポイントではなく「読み手が 1 文字と見なすもの」に従います。肌色修飾子付きの `👍🏽`、ZWJ でつないだ家族の絵文字、基底文字+結合文字のアクセントはいずれも 1 単位のまま残ります。

関連ツール