【入門編】 String.prototype.trimStart() / trimEnd() – JavaScript実践ガイド

こんにちは!フロントエンドの現場を長年フラフラと……もとい、最前線で駆け抜けてきたチーフアーキテクトの私です。

JavaScriptのコードを書いていると、避けて通れないのが「文字列(ストリング)の操作」ですよね。APIから送られてきたユーザー名や、フォームに入力されたパスワード、あるいはCMSから吐き出されたHTMLの断片などなど。文字列というのは、私たちが思っている以上に「ゴミや余計な空白」を抱え込んで暴れ回る生き物です。

今回は、そんな暴れん坊な文字列の「両端のムダ毛」――もとい、「余分な空白」を綺麗に整えてくれるメソッドの中から、`trimStart()` と `trimEnd()` という、ちょっとマニアックだけど実務ですごく頼りになるコンビに焦点を当てていきましょう。

「公式リファレンスを見たけど、いまいちピンとこない……」
「`trim()` と何が違うの?」

そんな初心者の方でも、今日から自信を持って使いこなせるように、身近な例えを交えてじっくり優しく解説していきますね。深呼吸して、リラックスしながら読み進めてください。

—

1. 文字列の「空白」って、そんなに悪者なの?

まずはイメージしてみましょう。
あなたは今、お気に入りの洋服をネット通販で買いました。数日後、自宅に届いた段ボール箱を開けます。すると、服そのものは素敵なのに、隙間にパンパンに詰められた「大量の緩衝材(プチプチや発泡スチロール)」が一緒に入っていました。

……いや、もちろん商品は守ってほしいけれど、これ、そのままクローゼットに入れます? 入れませよね。邪魔だから捨てますよね。

JavaScriptの世界でも同じことが起きているんです。
ユーザーがログイン画面の入力フォームで「 山田 太郎 」と、うっかり名前の前後(あるいは片方だけ)にスペース(空白)を入れてしまったとしましょう。

プログラム側からすると、

  • `”山田 太郎”` (普通の文字列)
  • `” 山田 太郎 “` (前後に見えない宇宙空間みたいなスペースがある文字列)

これらは全くの別物として扱われます。データベースの照合などで「一致しません!」とエラーになり、ユーザーを涙ぐませる原因になります。実務の現場では、この「目に見えない厄介な空白」をいかに綺麗に取り除くかが、バグを防ぐための非常に重要な第一歩なんです。

—

2. お馴染みの `trim()` と、今回主役のふたり

これまで、文字列の空白を取る方法として `trim()`(トリム)というメソッドが広く使われてきました。これは、文字通り「文字列の先頭と末尾の両方にある空白を、一網打尽に消し去る」という非常に頼もしいヤツです。

const messyText = ” こんにちは! “;
console.log(messyText.trim());
// 結果: “こんにちは!” (両端のスペースが綺麗さっぱり消える!)

「あれ、じゃあ `trim()` だけ知っていれば十分じゃない?」と思いますよね。
ええ、大半のケースではそれで事足ります。しかし、フロントエンドの現場はそんなに甘くありません。「右側の空白は消したくないけれど、左側だけ綺麗にしたい」あるいはその逆のシチュエーションに出くわすことがあるのです。

そこで登場するのが、今回の主役たちです。

  • `trimStart()`(トリム・スタート):先頭(左側)の空白だけを優しく取り除く
  • `trimEnd()`(トリム・エンド):末尾(右側)の空白だけを優しく取り除く

※ちなみに、古い環境だと `trimLeft()` や `trimRight()` という名前だったりしますが、現在は仕様が統一されて `trimStart()` と `trimEnd()` が標準になっています。安心してくださいね。

—

3. 身近な例えでイメージしてみよう

このふたつのメソッドの役割を、もう少し身近なもので例えてみましょう。

🎸 `trimStart()` は「ギターのチューニング(頭の調整)」

ギターの弦を巻き始めるヘッド部分(先頭)に、余分にビロ〜ンと伸びた弦が飛び出していると、演奏の邪魔になりますよね。先頭の余計な部分だけをスパッと切り落とすのが `trimStart()` です。

🚂 `trimEnd()` は「電車の切り離し(お尻の調整)」

長い列車の最後尾に、乗客の乗っていない無駄な車両(お尻の空白)が連結されていたとします。そこだけを切り離してすっきりさせるのが `trimEnd()` です。

文字の「前だけ」「後ろだけ」をピンポイントで狙い撃ちできるのが、彼らの素晴らしいところなんですよ。

—

4. 実務で役立つ!コードで動きを確認しよう

では、実際にエディタを動かす気持ちで、具体的なコードを見ていきましょう。
「うわ、難しそう……」なんて思わなくて大丈夫です。上から順に一行ずつ、一緒に見ていきましょうね。

サンプルコード1:`trimStart()` で先頭の空白をやっつける

// 先頭に余計なスペースが入ってしまったユーザー名
const userInput = ” TaroYamada”;

console.log(userInput.length);
// 出力結果: 15 (スペース3文字分+文字数)

// 先頭の空白だけを取り除く
const cleanInput = userInput.trimStart();

console.log(cleanInput);
// 出力結果: “TaroYamada” (先頭のスペースが消えている!)

console.log(cleanInput.length);
// 出力結果: 12 (文字数ぴったり!)

どうでしょう? 末尾には何もスペースを入れていないので、もし末尾に文字やスペースがあればそのまま残りますが、今回は先頭の「モヤモヤ」だけが綺麗になくなりました。

—

サンプルコード2:`trimEnd()` で末尾の空白をスッキリさせる

今度は、文章の「お尻(右側)」に謎の空白が入り込んでしまったパターンです。例えば、改行コードやスペースが意図せず混ざってしまったテキストボックスのデータを想像してください。

// 末尾にスペースが残ってしまったメッセージ
const comment = “すごく分かりやすい記事でした! “;

console.log(comment);
// ブラウザのコンソールだと分かりにくいですが、右側に余白があります

// 末尾の空白だけを取り除く
const fixedComment = comment.trimEnd();

// 先頭の「すごく」の前のスペースはそのまま残しつつ、お尻のスペースだけが消える
console.log(fixedComment);
// 出力結果: “すごく分かりやすい記事でした!”

「お尻の余白だけを綺麗に掃除して、先頭の空気感はそのまま残したい」という、ちょっとわがままなデザイン要件やデータ整形において、`trimEnd()` は最高の相棒になってくれます。

—

5. つまずきやすいポイントと「知っておくと得する」小話

ここで、JavaScriptを学び始めたばかりの方がよくハマるポイントと、実務的な注意点をそっとシェアしておきますね。

その1:「元の文字列は壊さない」という優しい仕様

JavaScriptの文字列(String)は、「イミュータブル(変更不可能なもの)」というちょっぴりお高くとまった性格をしています。
そのため、`trimStart()` を使っても、元の `userInput` という変数の中身自体が書き換わるわけではありません。

const text = ” Hello “;
text.trimStart(); // これだけだと、textの中身は ” Hello ” のまま!
console.log(text); // 出力: ” Hello ”

// 必ず新しい変数に入れるか、上書きする必要があります
const newText = text.trimStart();

「メソッドを実行したのに、なんで元の文字列からスペースが消えないの!?」と焦る初心者の先輩たちを何人も見てきました。大丈夫、君だけじゃないですよ。新しい変数に代入してあげてくださいね。

その2:どんな「空白」を消してくれるの?

半角スペース(` `)だけでなく、タブ文字(`\t`)や改行コード(`\n`)といった、いわゆる「目に見えないホワイトスペース」もまとめて綺麗にしてくれます。プログラミングの世界でいう「人間には見えないけど、パソコンにとってはゴミになり得るもの」をしっかりと察知して消してくれる、優秀な子たちです。

—

まとめ

今回は、文字列の先頭と末尾の空白を優しく取り除いてくれる `trimStart()` と `trimEnd()` について解説しました。

  • `trimStart()`:文字の「先頭(左側)」のモヤモヤを消す
  • `trimEnd()`:文字の「末尾(右側)」のモヤモヤを消す
  • どちらも元の文字列を壊さず、綺麗になった新しい文字列を返してくれる

実務でフォームのバリデーション(入力値のチェック)や、APIデータの整形を行うとき、これらのメソッドを知っているだけでコードのスマートさがグッと上がります。「あ、ここであのメソッドが使えるな」と引き出しの一つにしてもらえたら、チーフアーキテクトとしてこれほど嬉しいことはありません。

JavaScriptの海は広くて、時には波が荒いこともありますが、一つひとつのメソッドはあなたを助けてくれる心強い道具です。自分のペースで、楽しくコードを書いていきましょう!応援しています!

コメント

タイトルとURLをコピーしました