text / lines

テキスト行操作ツール

テキストの行単位操作をブラウザで完結。重複削除・ソート・逆順・行番号付け・空行削除・前後空白トリムに対応。 外部ライブラリ不使用、入力データはサーバーに送信されません。

※ 重複削除・ソートに適用

使い方

01
  1. 入力テキストエリアに操作したいテキストを貼り付けます
  2. 必要に応じて「大文字小文字を区別する」チェックボックスを切り替えます(重複削除・ソートに適用)
  3. 実行したい操作のボタンを押します
  4. 右側の出力エリアに結果が表示されます
  5. 「コピー」ボタンで出力結果をクリップボードにコピーできます

実装コード

02

すべての操作は標準のJavaScriptのみで実装しています。String.prototype.splitArray.prototype.sortSetのみを使用。外部ライブラリ不要でそのままコピーして利用できます。

export function deduplicateLines(text: string, caseSensitive: boolean): string {
  if (!text) return ''
  const lines = text.split('\n')
  const seen = new Set<string>()
  return lines.filter(line => {
    const key = caseSensitive ? line : line.toLowerCase()
    if (seen.has(key)) return false
    seen.add(key)
    return true
  }).join('\n')
}

export function sortLines(text: string, order: 'asc' | 'desc', caseSensitive: boolean): string {
  if (!text) return ''
  const lines = text.split('\n')
  const sorted = [...lines].sort((a, b) => {
    const ka = caseSensitive ? a : a.toLowerCase()
    const kb = caseSensitive ? b : b.toLowerCase()
    return ka < kb ? -1 : ka > kb ? 1 : 0
  })
  return (order === 'desc' ? sorted.reverse() : sorted).join('\n')
}

export function reverseLines(text: string): string {
  if (!text) return ''
  return text.split('\n').reverse().join('\n')
}

export function addLineNumbers(text: string, start: number): string {
  if (!text) return ''
  return text.split('\n').map((line, i) => `${i + start}: ${line}`).join('\n')
}

export function removeEmptyLines(text: string): string {
  if (!text) return ''
  return text.split('\n').filter(line => line.trim() !== '').join('\n')
}

export function trimLines(text: string): string {
  if (!text) return ''
  return text.split('\n').map(line => line.trim()).join('\n')
}

よくある使用例・注意点

03
ログファイルの重複行を削除する
大量のログファイルから同じエラーメッセージを1つにまとめたいときに便利です。「大文字小文字を区別する」をオンにして重複削除を実行すると、完全に同一の行のみが削除されます。
単語リストをアルファベット順に並べる
辞書ファイルや用語集などの単語リストを五十音順・アルファベット順に整列するのに使えます。「大文字小文字を区別しない」設定にすると、大文字・小文字を混在させたリストもまとめて整列できます。
CSVやTSVの前後空白を除去する
スプレッドシートからコピーしたデータには、各行の末尾にタブや空白が混入していることがあります。「トリム」操作で一括除去できます。ただし行内の空白は除去されないため、列の途中の空白を消したい場合は正規表現テスターを使ってください。
行番号付けの開始番号
「番号付け」は常に 1 始まりで付番します。0 始まりや任意の番号から始めたい場合は、実装コードの addLineNumbers 関数の start 引数を変更してください。
プライバシーについて
入力したテキストはブラウザ内のみで処理されます。サーバーには一切送信されないため、機密情報を含むログやコードも安全に操作できます。

関連ツール

04
テキスト差分ツール文字数カウンター正規表現テスター

ソースコード

05

このツールのソースコード(テストコードを含む)はGitHubで公開しています。 MITライセンスで自由に利用・改変できます。

GitHub でコードを見る →