JavaScript Tips | 文字列ユーティリティ:整形 - 大文字変換

JavaScript JavaScript
スポンサーリンク

「大文字変換」ユーティリティは何のために使うのか

まずイメージからいきます。
次のような値があるとします。

"abc"
"Abc"
"ABC"

人間から見ると「だいたい同じ」ですが、コンピュータ的には全部別物です。
検索、比較、ID 判定などで「大文字・小文字の違いを無視したい」場面はとても多いです。

そこで使うのが「大文字変換」ユーティリティです。
「一旦全部大文字にそろえてから比較・検索する」ことで、
大文字・小文字の揺れを吸収できます。


JavaScript 標準の toUpperCase の基本

いちばんシンプルな使い方

JavaScript の文字列には、標準で toUpperCase メソッドがあります。

const s = "abc";
const upper = s.toUpperCase();

console.log(upper); // "ABC"
JavaScript

もう少し例を増やすと:

"Abc".toUpperCase(); // "ABC"
"abc123".toUpperCase(); // "ABC123"
"hello-world".toUpperCase(); // "HELLO-WORLD"
JavaScript

ポイントはシンプルで、

英字 → 大文字に変換される
数字・記号・日本語 → そのまま

という動きです。

"テストabc123".toUpperCase(); // "テストABC123"
JavaScript

日本語には影響しません。


業務でよくある「大文字変換」の使いどころ

大文字・小文字を区別しない比較

例えば、「ユーザー ID は大文字・小文字を区別しない」という仕様だとします。

const input = "abc";
const stored = "ABC";

if (input === stored) {
  // false になってしまう
}
JavaScript

ここで「大文字変換」を挟みます。

const input = "abc";
const stored = "ABC";

if (input.toUpperCase() === stored.toUpperCase()) {
  // true になる
}
JavaScript

「比較する前に両方とも大文字にそろえる」
これが大文字変換ユーティリティの一番基本的な使い方です。

検索キーワードの正規化

検索機能でも、「abc」と「ABC」を同じものとして扱いたいことが多いです。

const keyword = "AbC";
const normalized = keyword.toUpperCase();

// normalized を使って検索
JavaScript

データベース側も、検索対象のカラムを大文字に変換して比較するか、
あらかじめ大文字で保存しておく、などの工夫を組み合わせます。


自前ユーティリティとして wrap する意味

null や undefined にも優しくしておく

そのまま str.toUpperCase() を呼ぶと、
strnullundefined のときにエラーになります。

業務コードでは、入力が「必ず文字列」とは限らないので、
小さなユーティリティにしておくと安全です。

function toUpper(value) {
  if (value == null) return "";
  return String(value).toUpperCase();
}
JavaScript

使い方はこうです。

toUpper("abc");      // "ABC"
toUpper("Abc123");   // "ABC123"
toUpper(null);       // ""
toUpper(123);        // "123"
JavaScript

「とりあえず文字列として扱いたい」という場面では、
このくらい防御的にしておくと安心です。


「全部大文字にする」と「一部だけ大文字にする」

全部大文字にするパターン

ここまでは「文字列全体を大文字にする」話でした。
ID、コード、検索キーなどは、これで十分なことが多いです。

toUpper("user01"); // "USER01"
JavaScript

先頭だけ大文字にする(キャメルケース風)

「見た目を整える」目的で、
先頭だけ大文字にしたいこともあります(例: 名前の表示など)。

function capitalize(word) {
  if (!word) return "";
  const s = String(word);
  return s.charAt(0).toUpperCase() + s.slice(1);
}

capitalize("taro");   // "Taro"
capitalize("yamada"); // "Yamada"
JavaScript

ここでのポイントは、

「全部大文字」ではなく「先頭だけ大文字」という別パターンもある
用途によってどちらを使うかを決める

ということです。


どこで大文字変換をかけるか(設計の話)

ここが一番大事なところです。

大文字変換は、「意味を変えない範囲で揺れを吸収する」ためのものです。
なので、基本的にはこう考えるとバランスが良いです。

比較・検索・照合 → 事前に大文字(または小文字)にそろえる
保存する値 → どちらかに統一しておく(例: すべて大文字で保存)

例えば、ユーザー ID を扱うときに、

保存時に toUpper して DB に入れる
検索時も toUpper してから照合する

と決めておけば、
「大文字・小文字の揺れ」を気にしなくて済みます。

逆に、表示用の文字列(名前、文章など)に対して
無条件に大文字変換をかけるのは危険です。
ユーザーの意図した表記を壊してしまう可能性があるからです。


小さな練習で感覚をつかむ

コンソールでいくつか試してみてください。

"abc".toUpperCase();
"AbC123".toUpperCase();
"テストabc".toUpperCase();
toUpper(null);
toUpper("user01");
JavaScript

どの文字がどう変わるか、日本語には影響しないこと、
null でも落ちないことを確認してみてください。

そのうえで、自分のプロジェクトに

export function toUpper(value) { ... }
JavaScript

を一つ置いて、
「大文字・小文字を無視したい比較や検索の前には必ずここを通す」
というルールにしてみてください。

それができた瞬間、あなたの文字列処理は
「なんとなく比較している」状態から
「意図を持って正規化してから比較している」状態に一段レベルアップします。

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