テキストケース変換
テキストを大文字・小文字・Title Case・camelCase・snake_case などに変換
入力
出力
テキストケース変換とは?
テキストケース変換とは、文字列の大文字・小文字のパターンや単語の区切り方を変換するプロセスです。ケース変換ツールは「hello world」のような入力を受け取り、UPPERCASE、lowercase、Title Case、camelCase、snake_case、kebab-case などのフォーマットに変換します。単純な ASCII テキストの変換は容易ですが、頭字語("XMLParser")、ロケール固有のルール(トルコ語のドット付き I)、複数スクリプトが混在する文字列ではエッジケースが発生します。
プログラミング言語、ファイルシステム、スタイルガイドはそれぞれ独自の命名規則を定めています。JavaScript の変数には通常 camelCase を使用します。Python の関数と変数は PEP 8 に従い snake_case を使用します。CSS クラス名には kebab-case を使用します。データベースのカラム名はチームによって異なりますが、PostgreSQL や MySQL では snake_case が主流です。数十ファイルにわたるリネーム作業でこれらの規則を手動で切り替えると、時間がかかり間違いも起きやすくなります。
ケースの規則はコード以外でも重要です。Title Case は Chicago Manual of Style や APA などのスタイルガイドで定義されたルールに従い、冠詞や短い前置詞は文頭でない限り小文字のままにします。Sentence case は最初の単語と固有名詞のみを大文字にします。アメリカ英語の出版物では見出しに Title Case を使用するのが標準ですが、ヨーロッパや技術ドキュメントでは Sentence case が一般的です。
このケース変換ツールを使う理由
テキストを貼り付けるだけで、9 種類のケースフォーマットに即時変換できます。VS Code 拡張機能のインストールも、スクリプトの作成も不要です。
ケース変換ツールの使用例
ケース規則リファレンス
各命名規則には、大文字化と単語の区切りに関する固有のルールがあります。以下の表はこのツールが対応する 9 種類のフォーマットを示しており、入力フレーズ「the quick brown fox」を参照例として使用しています。
| ケース | ルール | 例 |
|---|---|---|
| UPPERCASE | Every letter capitalized | THE QUICK BROWN FOX |
| lowercase | Every letter lowercased | the quick brown fox |
| Title Case | First letter of each word capitalized | The Quick Brown Fox |
| Sentence case | First letter of each sentence capitalized | The quick brown fox |
| camelCase | No separators, first word lowercase | theQuickBrownFox |
| PascalCase | No separators, every word capitalized | TheQuickBrownFox |
| snake_case | Words joined by underscores, all lowercase | the_quick_brown_fox |
| kebab-case | Words joined by hyphens, all lowercase | the-quick-brown-fox |
| CONSTANT_CASE | Words joined by underscores, all uppercase | THE_QUICK_BROWN_FOX |
camelCase vs snake_case vs kebab-case
この 3 つの規則はソフトウェア開発で最も広く使われていますが、それぞれ異なるエコシステムに属しています。誤った規則を選ぶと、リンターが壊れ、API コントラクトに違反し、コードベースに一貫性がなくなります。
コード例
ケース規則をプログラムで変換する方法を示します。各例では最も一般的な変換(camelCase から snake_case、snake_case から camelCase、基本的な大文字・小文字・タイトルケースの変換)を取り上げています。
// camelCase → snake_case
function toSnakeCase(str) {
return str
.replace(/([a-z])([A-Z])/g, '$1_$2')
.replace(/[\s-]+/g, '_')
.toLowerCase()
}
toSnakeCase('myVariableName') // → "my_variable_name"
toSnakeCase('kebab-case-str') // → "kebab_case_str"
// snake_case → camelCase
function toCamelCase(str) {
return str
.toLowerCase()
.replace(/[_-](\w)/g, (_, c) => c.toUpperCase())
}
toCamelCase('my_variable_name') // → "myVariableName"
// Title Case
function toTitleCase(str) {
return str.replace(/\w\S*/g, w =>
w.charAt(0).toUpperCase() + w.slice(1).toLowerCase()
)
}
toTitleCase('the quick brown fox') // → "The Quick Brown Fox"import re
text = "the quick brown fox"
# UPPERCASE / lowercase
text.upper() # → "THE QUICK BROWN FOX"
text.lower() # → "the quick brown fox"
# Title Case
text.title() # → "The Quick Brown Fox"
# camelCase
def to_camel(s):
words = re.split(r'[\s_-]+', s)
return words[0].lower() + ''.join(w.capitalize() for w in words[1:])
to_camel("my_variable_name") # → "myVariableName"
# snake_case from camelCase
def to_snake(s):
return re.sub(r'([a-z])([A-Z])', r'\1_\2', s).lower()
to_snake("myVariableName") # → "my_variable_name"
# kebab-case
def to_kebab(s):
return re.sub(r'([a-z])([A-Z])', r'\1-\2', s).replace('_', '-').lower()
to_kebab("myVariableName") # → "my-variable-name"package main
import (
"fmt"
"regexp"
"strings"
)
// camelCase → snake_case
func toSnake(s string) string {
re := regexp.MustCompile("([a-z])([A-Z])")
snake := re.ReplaceAllString(s, "${1}_${2}")
return strings.ToLower(snake)
}
// snake_case → camelCase
func toCamel(s string) string {
parts := strings.Split(strings.ToLower(s), "_")
for i := 1; i < len(parts); i++ {
parts[i] = strings.Title(parts[i])
}
return strings.Join(parts, "")
}
func main() {
fmt.Println(toSnake("myVariableName")) // → my_variable_name
fmt.Println(toCamel("my_variable_name")) // → myVariableName
fmt.Println(strings.ToUpper("hello")) // → HELLO
fmt.Println(strings.ToUpper("hello world")) // → HELLO WORLD
}# UPPERCASE echo "hello world" | tr '[:lower:]' '[:upper:]' # → HELLO WORLD # lowercase echo "HELLO WORLD" | tr '[:upper:]' '[:lower:]' # → hello world # camelCase → snake_case (using sed) echo "myVariableName" | sed 's/\([a-z]\)\([A-Z]\)/\1_\2/g' | tr '[:upper:]' '[:lower:]' # → my_variable_name # snake_case → kebab-case echo "my_variable_name" | tr '_' '-' # → my-variable-name