ユーザー入力の正規化、大文字小文字を無視した比較、API レスポンスの整形など、文字列の大文字・小文字を変換する操作はフロントエンド開発で頻繁に使います。JavaScript では toUpperCase と toLowerCase の 2 つのメソッドで簡単に変換できます。
・toUpperCase で全て大文字に変換する方法
・toLowerCase で全て小文字に変換する方法
・先頭文字だけ大文字にする capitalize 関数
・各単語の先頭を大文字にする Title Case 変換
・キャメルケース・スネークケース・ケバブケースの相互変換
・大文字小文字を無視した文字列比較
・toLocaleUpperCase / toLocaleLowerCase のロケール対応
toUpperCase で全て大文字に変換する
const result = str.toUpperCase(); // 戻り値: 全て大文字に変換された新しい文字列 // 元の文字列は変更されない
console.log("Hello World".toUpperCase()); // "HELLO WORLD"
console.log("javascript".toUpperCase()); // "JAVASCRIPT"
console.log("abc123".toUpperCase()); // "ABC123"(数字はそのまま)
console.log("こんにちは".toUpperCase()); // "こんにちは"(日本語は変化なし)
toLowerCase で全て小文字に変換する
console.log("Hello World".toLowerCase()); // "hello world"
console.log("JAVASCRIPT".toLowerCase()); // "javascript"
console.log("ABC123".toLowerCase()); // "abc123"
メソッド一覧
| メソッド | 動作 | 例 |
|---|---|---|
toUpperCase() |
全て大文字に変換 | "abc" → "ABC" |
toLowerCase() |
全て小文字に変換 | "ABC" → "abc" |
toLocaleUpperCase(locale) |
ロケール対応の大文字変換 | トルコ語の i → İ |
toLocaleLowerCase(locale) |
ロケール対応の小文字変換 | トルコ語の I → ı |
先頭文字だけ大文字にする(capitalize)
JavaScript には先頭大文字化のメソッドがないため、charAt(0).toUpperCase() と slice(1) を組み合わせて自作します。
function capitalize(str) {
if (!str) return str;
return str.charAt(0).toUpperCase() + str.slice(1);
}
console.log(capitalize("hello")); // "Hello"
console.log(capitalize("javaScript")); // "JavaScript"
console.log(capitalize("")); // ""
先頭大文字 + 残りを小文字にする
function capitalizeStrict(str) {
if (!str) return str;
return str.charAt(0).toUpperCase() + str.slice(1).toLowerCase();
}
console.log(capitalizeStrict("hELLO")); // "Hello"
console.log(capitalizeStrict("WORLD")); // "World"
各単語の先頭を大文字にする(Title Case)
function toTitleCase(str) {
return str
.toLowerCase()
.split(" ")
.map(word => word.charAt(0).toUpperCase() + word.slice(1))
.join(" ");
}
console.log(toTitleCase("hello world")); // "Hello World"
console.log(toTitleCase("JAVASCRIPT IS GREAT")); // "Javascript Is Great"
キャメルケース・スネークケース・ケバブケースの相互変換
変数名やファイル名のケース変換は、API 連携やコードの整形で頻繁に使います。
| ケース | 形式 | 例 |
|---|---|---|
| キャメルケース | camelCase |
firstName |
| パスカルケース | PascalCase |
FirstName |
| スネークケース | snake_case |
first_name |
| ケバブケース | kebab-case |
first-name |
キャメルケース → スネークケース
function camelToSnake(str) {
return str.replace(/([A-Z])/g, "_$1").toLowerCase();
}
console.log(camelToSnake("firstName")); // "first_name"
console.log(camelToSnake("getUserName")); // "get_user_name"
console.log(camelToSnake("HTMLElement")); // "h_t_m_l_element"
スネークケース → キャメルケース
function snakeToCamel(str) {
return str.replace(/_([a-z])/g, (_, c) => c.toUpperCase());
}
console.log(snakeToCamel("first_name")); // "firstName"
console.log(snakeToCamel("get_user_name")); // "getUserName"
ケバブケース → キャメルケース
function kebabToCamel(str) {
return str.replace(/-([a-z])/g, (_, c) => c.toUpperCase());
}
console.log(kebabToCamel("first-name")); // "firstName"
console.log(kebabToCamel("background-color")); // "backgroundColor"
background-color → backgroundColor大文字・小文字を無視した文字列比較
ユーザー入力の比較や検索で、大文字小文字を区別しない比較が必要になることがよくあります。
function equalsIgnoreCase(a, b) {
return a.toLowerCase() === b.toLowerCase();
}
console.log(equalsIgnoreCase("Hello", "hello")); // true
console.log(equalsIgnoreCase("JavaScript", "JAVASCRIPT")); // true
console.log(equalsIgnoreCase("Hello", "World")); // false
function equalsLocaleIgnoreCase(a, b) {
return a.localeCompare(b, undefined, { sensitivity: "accent" }) === 0;
}
console.log(equalsLocaleIgnoreCase("Hello", "hello")); // true
console.log(equalsLocaleIgnoreCase("café", "CAFÉ")); // true
| 方法 | 特徴 | 用途 |
|---|---|---|
a.toLowerCase() === b.toLowerCase() |
シンプル・高速 | 一般的な比較 |
a.localeCompare(b, ..., { sensitivity }) |
ロケール・アクセント対応 | 国際化対応 |
toLocaleUpperCase / toLocaleLowerCase(ロケール対応)
一部の言語では、大文字・小文字の変換ルールが英語と異なります。代表例がトルコ語です。
// 英語: i → I(通常)
console.log("i".toUpperCase()); // "I"
// トルコ語: i → İ(上にドットあり)
console.log("i".toLocaleUpperCase("tr")); // "İ"
// トルコ語: I → ı(下にドットなし)
console.log("I".toLocaleLowerCase("tr")); // "ı"
console.log("I".toLowerCase()); // "i"(英語ルール)
"ja")では toUpperCase と toLocaleUpperCase の結果に違いはありません。トルコ語・ドイツ語など一部の言語向けにアプリケーションを開発する場合にのみ、Locale 版を使う必要があります。実務でよく使うパターン
ユーザー入力の正規化
// メールアドレスは小文字に統一して保存
function normalizeEmail(email) {
return email.trim().toLowerCase();
}
console.log(normalizeEmail(" Tanaka@Example.COM "));
// "tanaka@example.com"
大文字小文字を無視したソート
const fruits = ["Banana", "apple", "Cherry", "date"]; // そのままソート: 大文字が先になる console.log([...fruits].sort()); // ["Banana", "Cherry", "apple", "date"] // 大文字小文字を無視してソート console.log([...fruits].sort((a, b) => a.toLowerCase().localeCompare(b.toLowerCase()) )); // ["apple", "Banana", "Cherry", "date"]
大文字・小文字を判定する
function isUpperCase(char) {
return char === char.toUpperCase() && char !== char.toLowerCase();
}
function isLowerCase(char) {
return char === char.toLowerCase() && char !== char.toUpperCase();
}
console.log(isUpperCase("A")); // true
console.log(isUpperCase("a")); // false
console.log(isUpperCase("1")); // false(数字はどちらでもない)
console.log(isLowerCase("z")); // true
パスワードの大文字小文字チェック
function hasUpperAndLower(str) {
return str !== str.toLowerCase() && str !== str.toUpperCase();
}
console.log(hasUpperAndLower("Password1")); // true(大文字と小文字を含む)
console.log(hasUpperAndLower("password")); // false(小文字のみ)
console.log(hasUpperAndLower("PASSWORD")); // false(大文字のみ)
関連記事
- アルファベットの大文字・小文字を判定する方法
- 大文字ごとにスペースで区切る方法 — camelCase・PascalCase 変換
- charAt の使い方 — 文字列から 1 文字を取得
- replace で文字列を置換する方法
- includes の使い方 — 大文字小文字を無視した検索
- 文字コードを取得・変換する方法
よくある質問
toUpperCase は Unicode 標準のルールで変換します。toLocaleUpperCase はロケール(言語・地域)に応じたルールで変換します。トルコ語では "i".toUpperCase() が "I" ですが、"i".toLocaleUpperCase("tr") は "İ"(上にドット付き)になります。日本語環境では違いはありません。str.charAt(0).toUpperCase() + str.slice(1) で自作します。空文字列のチェックも忘れずに行いましょう。"abc".toUpperCase() は "ABC"(全角大文字)を返します。全角→半角への変換も必要な場合は、文字コードの差分(0xFEE0)を利用した変換処理を別途行ってください。/([A-Z])/g では "HTMLElement" が "h_t_m_l_element" になります。連続大文字を考慮するなら /([A-Z]+)([A-Z][a-z])|([a-z])([A-Z])/g のようなパターンが必要です。ライブラリ(lodash の _.snakeCase など)の利用も検討してください。まとめ
JavaScript で文字列の大文字・小文字を変換する方法を整理しました。
- 全て大文字:
str.toUpperCase() - 全て小文字:
str.toLowerCase() - 先頭大文字:
str.charAt(0).toUpperCase() + str.slice(1) - 大文字小文字無視比較:
a.toLowerCase() === b.toLowerCase() - ケース変換: 正規表現の replace でキャメル ↔ スネーク ↔ ケバブ
- ロケール対応: トルコ語など特殊ルールがある言語は Locale 版を使用
入力値の正規化、大文字小文字を無視した検索・ソート、パスワード強度チェックなど、実務での出番が非常に多いメソッドです。基本は toUpperCase / toLowerCase で、ロケール対応が必要な場合のみ Locale 版を使い分けてください。