【JavaScript】文字列の大文字・小文字を変換する方法|toUpperCase・toLowerCase・先頭大文字化・ケース変換・大文字小文字無視比較まで解説

ユーザー入力の正規化、大文字小文字を無視した比較、API レスポンスの整形など、文字列の大文字・小文字を変換する操作はフロントエンド開発で頻繁に使います。JavaScript では toUpperCasetoLowerCase の 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());   // "こんにちは"(日本語は変化なし)
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) を組み合わせて自作します。

JavaScript
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(""));           // ""

先頭大文字 + 残りを小文字にする

JavaScript
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)

JavaScript
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

キャメルケース → スネークケース

JavaScript
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"

スネークケース → キャメルケース

JavaScript
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"

ケバブケース → キャメルケース

JavaScript
function kebabToCamel(str) {
  return str.replace(/-([a-z])/g, (_, c) => c.toUpperCase());
}

console.log(kebabToCamel("first-name"));      // "firstName"
console.log(kebabToCamel("background-color")); // "backgroundColor"
CSS プロパティ名(ケバブケース)を JavaScript のスタイルプロパティ名(キャメルケース)に変換する場面でよく使います。例: background-colorbackgroundColor

大文字・小文字を無視した文字列比較

ユーザー入力の比較や検索で、大文字小文字を区別しない比較が必要になることがよくあります。

toLowerCase で比較
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
localeCompare で比較(ロケール対応)
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(ロケール対応)

一部の言語では、大文字・小文字の変換ルールが英語と異なります。代表例がトルコ語です。

JavaScript
// 英語: 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 版を使う必要があります。

実務でよく使うパターン

ユーザー入力の正規化

JavaScript
// メールアドレスは小文字に統一して保存
function normalizeEmail(email) {
  return email.trim().toLowerCase();
}

console.log(normalizeEmail("  Tanaka@Example.COM  "));
// "tanaka@example.com"

大文字小文字を無視したソート

JavaScript
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"]

大文字・小文字を判定する

JavaScript
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

パスワードの大文字小文字チェック

JavaScript
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(大文字のみ)

関連記事

よくある質問

QtoUpperCase と toLocaleUpperCase の違いは何ですか?
AtoUpperCase は Unicode 標準のルールで変換します。toLocaleUpperCase はロケール(言語・地域)に応じたルールで変換します。トルコ語では "i".toUpperCase()"I" ですが、"i".toLocaleUpperCase("tr")"İ"(上にドット付き)になります。日本語環境では違いはありません。
Q先頭文字だけ大文字にするメソッドはありますか?
AJavaScript にはビルトインの capitalize メソッドはありません。str.charAt(0).toUpperCase() + str.slice(1) で自作します。空文字列のチェックも忘れずに行いましょう。
QtoUpperCase は元の文字列を変更しますか?
Aいいえ、元の文字列は変更されません。新しい文字列を返します。JavaScript の文字列はイミュータブル(不変)なので、どのメソッドも元の文字列を変更しません。
Q日本語の全角英字も変換されますか?
Aはい、"abc".toUpperCase()"ABC"(全角大文字)を返します。全角→半角への変換も必要な場合は、文字コードの差分(0xFEE0)を利用した変換処理を別途行ってください。
Qキャメルケースをスネークケースに変換する際、連続大文字(HTMLElement)が崩れます。
A単純な正規表現 /([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 版を使い分けてください。