trim() / padStart() / padEnd() / repeat()

前後の空白を落とす trim()、桁を揃える padStart() / padEnd()、繰り返す repeat()。全角空白も落ちること、長すぎると詰めないこと、日本語で桁が揃わない理由まで実行して確かめます。

実行して検証済み処理系Node 22.22.3対応ES2017難易度○○○○目安6更新

どれも元の文字列は変えません新しい文字列が返ります。

trim() — 前後の空白を落とす

example.js
出力書き換えて実行できます
Ctrl+Enter でも実行JS · UTF-8
"あ" "あ " " あ"
example.js
出力書き換えて実行できます
Ctrl+Enter でも実行JS · UTF-8
"a\n b"

落ちるのは前後だけです。真ん中は残ります。

example.js
出力書き換えて実行できます
Ctrl+Enter でも実行JS · UTF-8
false true
example.js
出力書き換えて実行できます
Ctrl+Enter でも実行JS · UTF-8
005 500 xyxab

タブも改行も全角空白も落ちます。 ですが、真ん中の改行と半角空白はそのままです。

仕様では「空白類」と「行終端子」の両方が対象です。全角空白 U+3000 も空白類に含まれます。

入力を受け取ったら、まず trim() してから比べてください。

javascript
console.log('12345'.padStart(3, '0'));
console.log('12345'.padStart(3, '0').length);
12345 5
example.js
出力書き換えて実行できます
Ctrl+Enter でも実行JS · UTF-8
" a"

見た目が同じでも一致しません。 問い合わせ画面の照合でよく起きます。

padStart() / padEnd() — 桁を揃える

javascript
console.log('あ'.padStart(3, '0'));
console.log('5'.padStart(3, '0'));
00あ 005
example.js
出力書き換えて実行できます
Ctrl+Enter でも実行JS · UTF-8
ababab ""

第1引数は足す数ではなく、仕上がりの長さです。 埋める文字は繰り返され、溢れた分は切られます。

元が長いと何もしない

example.js
出力書き換えて実行できます
Ctrl+Enter でも実行JS · UTF-8
RangeError: Invalid count value: -1
example.js
出力書き換えて実行できます
Ctrl+Enter でも実行JS · UTF-8
a b c

切り詰めてはくれません。 長さを必ず揃えたいなら、 slice() と組み合わせてください。 → 文字列を決まった文字数で切り詰める

第2引数を省くと半角空白

日本語では桁が揃わない

どちらも3文字です。 ですが、等幅の表示でも は2文字分の幅を取ります。 見た目の桁は揃いません。

見た目で揃えたいなら、文字数ではなく表示幅で数える必要があります。 数える単位そのものにも注意が要ります。 → 文字を正しく数える

repeat() — 繰り返す

負の数を渡すと落ちます。

計算した値を渡すときは、負にならないか確かめてください。

使い分け

やりたいこと 使うもの
前後の空白を落とす trim()
前だけ・後ろだけ trimStart() / trimEnd()
ゼロ埋め・右寄せ padStart()
左寄せ padEnd()
区切り線を作る repeat()
真ん中の空白もまとめたい replace() と正規表現

真ん中の連続した空白を1つにするなら、置換です。

String.prototype.replace() と replaceAll()

まとめ

  • どれも元の文字列は変えない。返り値を使う
  • trim()前後だけ。タブ・改行・全角空白も落ちる
  • 入力の照合は必ず trim() してから
  • padStart() の引数は仕上がりの長さ。元が長いと何もしない
  • 日本語では文字数を揃えても見た目の桁は揃わない
  • repeat() に負の数を渡すと RangeError

この記事の根拠

  1. String.prototype.trim — ECMAScript® 2026 Language Specificationtc39.es
  2. String.prototype.padStart — ECMAScript® 2026 Language Specificationtc39.es
  3. String.prototype.padStart() — MDNdeveloper.mozilla.org

掲載しているコード例は、公開前に読み手が押したときに動くのと同じもので実行して出力を突き合わせています。結果はリポジトリに残しています。

このページの原文(Markdown)