JavaScript文字列の大文字・小文字変換の基本と実践
文字列を「全部大文字」「全部小文字」に揃えたいときは、toUpperCase と toLowerCase が最短ルート。検索や比較、表示整形で頻出です。
構文とポイント
const upper = s.toUpperCase(); // 全部大文字
const lower = s.toLowerCase(); // 全部小文字
JavaScript- 返り値: 新しい文字列(元の文字列は変わらない)
- 対象: 英字にのみ影響(数字・記号は変化しない)
- 用途: ケース無視の比較、ユーザー入力の正規化、表示ルールの統一
すぐ使えるテンプレート集
基本:全部大文字・全部小文字
const s = "Hello World!";
console.log(s.toUpperCase()); // "HELLO WORLD!"
console.log(s.toLowerCase()); // "hello world!"
JavaScript- ポイント: 比較前に揃えるのが定番。
ケース無視で比較(検索にも)
const query = "tokyo";
const city = "Tokyo";
const isMatch = query.toLowerCase() === city.toLowerCase();
console.log(isMatch); // true
JavaScript- ポイント: 比較対象を同じケースへ正規化してから比べる。
配列の文字列を揃える(表示用)
const names = ["Aki", "Mao", "Ren"];
const display = names.map(n => n.toUpperCase()).join(", ");
console.log(display); // "AKI, MAO, REN"
JavaScript- ポイント: mapで一括整形→joinで結合。
前後の空白を削ってから小文字化(入力クリーニング)
const input = " JS Master ";
const normalized = input.trim().toLowerCase();
console.log(normalized); // "js master"
JavaScript- ポイント: trim→ケース統一で安定した比較ができる。
実務で便利な拡張
先頭だけを大文字(見出し風タイトルケースの簡易版)
function capitalize(word) {
const s = word.trim();
return s ? s[0].toUpperCase() + s.slice(1).toLowerCase() : "";
}
console.log(capitalize("jAVAsCript")); // "Javascript"
JavaScript- ポイント: 完全な英語タイトルケースは例外が多いので、まずは「先頭だけ大文字+残り小文字」から。
単語ごとにタイトルケース(簡易)
function toTitleCase(str) {
return str
.trim()
.split(/\s+/)
.map(w => w ? w[0].toUpperCase() + w.slice(1).toLowerCase() : "")
.join(" ");
}
console.log(toTitleCase("hello WORLD from JS"));
// "Hello World From Js"
JavaScript- ポイント: 連続空白はまとめてsplit、各単語にcapitalize。
ロケールを考慮した変換(トルコ語問題など)
// ロケール依存の大文字・小文字変換
console.log("istanbul".toLocaleUpperCase("tr")); // "İSTANBUL"
console.log("İSTANBUL".toLocaleLowerCase("tr")); // "istanbul"
JavaScript- ポイント: 言語特有の大小文字(例:トルコ語の i/İ)に配慮したい場合は toLocaleUpperCase / toLocaleLowerCase を使う。
よくある落とし穴と対策
- 英字以外は変わらない: 数字・記号・ひらがな・カタカナは影響なし。
- 対策: 大小文字変換は英字だけに期待する。別の整形が必要なら事前処理を分ける。
- null/undefinedに対して呼ぶ: 例外が発生。
- 対策: 型チェックまたはデフォルト値で保護(例:
String(s).toLowerCase())。
- 対策: 型チェックまたはデフォルト値で保護(例:
- 全角記号・スペースの扱い: 大小変換では変わらない。
- 対策: 必要なら
trimや置換で別途処理。
- 対策: 必要なら
- タイトルケースの例外(英語の前置詞など): 単純なルールでは不自然。
- 対策: 簡易版で割り切るか、辞書ベースの処理を検討。
練習問題(手を動かして覚える)
- ケース無視の比較:
const a = "JavaScript";
const b = "javascript";
console.log(a.toLowerCase() === b.toLowerCase()); // true
JavaScript- 配列のタグを小文字に揃える:
const tags = ["React", "Vue", "ANGULAR"];
console.log(tags.map(t => t.toLowerCase())); // ["react","vue","angular"]
JavaScript- タイトルを簡易タイトルケースへ:
const title = "the quick BROWN fox";
const normalized = title
.split(/\s+/)
.map(w => w[0].toUpperCase() + w.slice(1).toLowerCase())
.join(" ");
console.log(normalized); // "The Quick Brown Fox"
JavaScript- ロケール依存の変換(参考):
console.log("istanbul".toLocaleUpperCase("tr")); // "İSTANBUL"
JavaScript直感的な指針
- 比較前の正規化: trim → toLowerCase が鉄板。
- 表示の統一: 一括で toUpperCase / toLowerCase、または簡易タイトルケース。
- 言語特有の大小文字: toLocaleUpperCase / toLocaleLowerCase を検討。
