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

JavaScript JavaScript
スポンサーリンク

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

大文字変換と対になるのが「小文字変換」です。
次のような値を考えてみてください。

"ABC"
"Abc"
"abc"

人間からすると「同じ abc」ですが、コンピュータ的には全部別物です。
検索・比較・ID 判定などで「大文字・小文字の違いを無視したい」場面はとても多く、
そのときによく使われるのが「全部小文字にそろえる」というやり方です。

「比較・検索の前に一旦小文字に正規化する」
これが小文字変換ユーティリティの主な役割です。


JavaScript 標準の toLowerCase の基本

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

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

const s = "ABC";
const lower = s.toLowerCase();

console.log(lower); // "abc"
JavaScript

もう少し例を見てみます。

"AbC123".toLowerCase();      // "abc123"
"Hello-World".toLowerCase(); // "hello-world"
"テストABC".toLowerCase();   // "テストabc"
JavaScript

ポイントはシンプルで、

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

という動きです。
日本語には影響しないので、英数字だけをきれいにそろえたいときにちょうどいいです。


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

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

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

const input = "Abc";
const stored = "abc";

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

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

const input = "Abc";
const stored = "abc";

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

「比較する前に両方とも小文字にそろえる」
これだけで、大文字・小文字の揺れを吸収できます。

大文字変換でも同じことができますが、
「URL」「メールアドレス」「ユーザー名」などは
小文字で扱う文化が強いので、
「全部小文字に統一する」ほうが自然な場面も多いです。

検索キーワードの正規化

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

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

// normalized を使って検索
JavaScript

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


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

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

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

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

function toLower(value) {
  if (value == null) return "";
  return String(value).toLowerCase();
}
JavaScript

使い方はこうなります。

toLower("ABC");      // "abc"
toLower("AbC123");   // "abc123"
toLower(null);       // ""
toLower(123);        // "123"
JavaScript

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


小文字変換をどこで使うか(設計のポイント)

「内部表現を小文字で統一する」という発想

大文字・小文字を区別したくない値(ユーザー ID、コード、メールアドレスなど)は、
設計としてこう決めてしまうと楽になります。

保存するときに toLower して DB に入れる。
検索するときも toLower してから照合する。

例えば、メールアドレスならこんなイメージです。

function normalizeEmail(email) {
  return toLower(email.trim());
}

const stored = normalizeEmail("User@example.com");   // "user@example.com"
const input  = normalizeEmail("USER@EXAMPLE.COM");   // "user@example.com"

if (stored === input) {
  // 同じメールアドレスとして扱える
}
JavaScript

「内部では小文字で統一しておく」ことで、
比較・検索・重複チェックがとてもシンプルになります。

表示用の文字列にはむやみにかけない

一方で、ユーザーの名前や文章など、
「表記そのものに意味がある」文字列に対して
無条件に小文字変換をかけるのは危険です。

例えば、「Taro Yamada」を勝手に「taro yamada」にしてしまうと、
ユーザーの意図した表記を壊してしまいます。

なので、

ID・コード・メール・URL など → 小文字に正規化して扱う
名前・文章・タイトルなど → ユーザーの入力を尊重し、勝手に変換しない

という線引きをしておくと、設計としてブレにくくなります。


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

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

"ABC".toLowerCase();
"AbC123".toLowerCase();
"テストABC".toLowerCase();
toLower(null);
toLower("User01");
JavaScript

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

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

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

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

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

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