sedを使ってキャメルケース、スネークケースの相互変換を行う
Contents
はじめに
プロジェクトのソースコードの中のスネークケース文字列をキャメルケース文字列に変換する必要があったので sed で変換できるか試してみました。
検証環境
$ sed --version
sed (GNU sed) 4.2.2スネークケース から キャメルケース への変換
ロジック解説
- 全て小文字に変換
_?(アンダースコアと何かの文字)の組合せを探し置換_(アンダースコア)は除去_に続く文字を大文字に変換
# 4つのテストケースを実行
$ cat <<EOF | sed -r 's/.*/\L\0/g; s/_([a-z0-9])/\U\1/g;'
xxx_yyy_zzz
XXX_YYY_ZZZ
xYz
XYz
EOF
xxxYyyZzz
xxxYyyZzz
xyz
xyzキャメルケース から スネークケース への変換
ロジック解説
- 先頭1文字を小文字に変換
- 大文字を探し置換
_(アンダースコア)を前に付与
- 全て小文字(あるいは大文字)に変換
変換(小文字のみ)
小文字のスネークケースに変換
# 3つのテストケースを実行
cat <<EOF | sed -r 's/^./\L\0/; s/([A-Z])/_\1/g; s/.*/\L\0/g;'
xxxYyyZzz
XxxYyyZzz
XyZ
EOF
xxx_yyy_zzz
xxx_yyy_zzz
xy_z変換(大文字のみ)
大文字のスネークケースに変換
# 3つのテストケースを実行
cat <<EOF | sed -r 's/^./\L\0/; s/([A-Z])/_\1/g; s/.*/\U\0/g;'
xxxYyyZzz
XxxYyyZzz
XyZ
EOF
XXX_YYY_ZZZ
XXX_YYY_ZZZ
XY_Zひとこと
多くのケースを想定しなければもっとシンプルにかけますが、いろんなケースを考え出すとどんどん複雑になりますね。




ディスカッション
コメント一覧
まだ、コメントがありません