「Java/サンプル/スネークケースとキャメルケースの変換」の編集履歴(バックアップ)一覧はこちら

Java/サンプル/スネークケースとキャメルケースの変換」(2013/11/17 (日) 03:11:09) の最新版変更点

追加された行は緑色になります。

削除された行は赤色になります。

スネークケースとキャメルケースをお互いに変換するJavaのサンプルです。 * サンプルソース // スネークケースをキャメルケースに、キャメルをスネークに変換するサンプル public class SnakeCamelChange { public static void main(String[] args) { // 変換対象 String[] ary = new String[] { "snake_case", "camelCase" , "DAOClass" }; for (int i = 0; i < ary.length; i++) { String str = ary[i]; // スネーク or キャメル判定 // アンダーバーがある = スネークケース if (str.indexOf("_") < 0) { // キャメル to スネーク // 操作しやすいようにStringBufferに変換 StringBuffer sb = new StringBuffer(str); for (int j = 0; j < sb.length(); j++) { // 一文字ずつ大文字かどうか判定 char c = sb.charAt(j); // 大文字の場合 if (Character.isUpperCase(c)) { char c2 = sb.charAt(j + 1); if (Character.isUpperCase(c2)) { // 大文字が連続する場合、小文字に変換するだけ sb.setCharAt(j, Character.toLowerCase(c)); } else { // 次の文字も判定 // アンダーバー挿入 sb.insert(j, '_'); // 大文字を小文字に変換 sb.setCharAt(j + 1, Character.toLowerCase(c)); // 挿入した分インデックスを進める j++; } } } // 結果を出力 System.out.println("変換結果出力"); System.out.println(str); System.out.println("↓"); System.out.println(sb.toString()); System.out.println(""); // アンダーバーがない = キャメルケース } else { // スネーク to キャメル // 操作しやすいようにStringBufferに変換 + 小文字に変換 StringBuffer sb = new StringBuffer(str.toLowerCase()); int idx = 0; // アンダーバーを検索、アンダーバーがなくなったらループ終了 while ((idx = sb.indexOf("_")) > 0) { // アンダーバーの次の文字を取得 char c = sb.charAt(idx + 1); // アンダーバーの次の文字を大文字に変換 c = Character.toUpperCase(c); // アンダーバーの次の文字を大文字に変更 sb.setCharAt(idx + 1, c); // アンダーバーを削除 sb.deleteCharAt(idx); } // 結果を出力 System.out.println("変換結果出力"); System.out.println(str); System.out.println("↓"); System.out.println(sb.toString()); System.out.println(""); } } } } * 実行結果 変換結果出力 snake_case ↓ snakeCase 変換結果出力 camelCase ↓ camel_case 変換結果出力 SNAKECase ↓ snake_case * 解説  データベースのカラム名はスネークケース、Javaの変数名はキャメルケースで記述することが多いのですが、職場の eclipse やエディタには変換機能がなかったので作ってみたサンプルです。  実際にこのサンプルを使う場合は変換結果のみほしいと思われるので、変換結果出力の部分を少々いじってください。同様のサンプルを、正規表現で作成している方がいたのですが、そちらを参考に「DAOClass」を「dao_class」に変換できるように修正しました。  参考 [[キャメルケース表記を正規表現でアンダースコア区切り表記に変換 - eller's blog>http://eller86.hatenablog.jp/entry/20081130/1228026182]] 管理人はまだまだ使いこなせていませんが、正規表現ってほんとうに素晴らしいですね。
スネークケースとキャメルケースをお互いに変換するJavaのサンプルです。 * サンプルソース // スネークケースをキャメルケースに、キャメルをスネークに変換するサンプル public class SnakeCamelChange { public static void main(String[] args) { // 変換対象 String[] ary = new String[] { "snake_case", "camelCase" , "DAOClass" }; for (int i = 0; i < ary.length; i++) { String str = ary[i]; // スネーク or キャメル判定 // アンダーバーがある = スネークケース if (str.indexOf("_") < 0) { // キャメル to スネーク // 操作しやすいようにStringBufferに変換 StringBuffer sb = new StringBuffer(str); for (int j = 0; j < sb.length(); j++) { // 一文字ずつ大文字かどうか判定 char c = sb.charAt(j); // 大文字の場合 if (Character.isUpperCase(c)) { char c2 = sb.charAt(j + 1); if (Character.isUpperCase(c2)) { // 大文字が連続する場合、小文字に変換するだけ sb.setCharAt(j, Character.toLowerCase(c)); } else { // 次の文字も判定 // アンダーバー挿入 sb.insert(j, '_'); // 大文字を小文字に変換 sb.setCharAt(j + 1, Character.toLowerCase(c)); // 挿入した分インデックスを進める j++; } } } // 結果を出力 System.out.println("変換結果出力"); System.out.println(str); System.out.println("↓"); System.out.println(sb.toString()); System.out.println(""); // アンダーバーがない = キャメルケース } else { // スネーク to キャメル // 操作しやすいようにStringBufferに変換 + 小文字に変換 StringBuffer sb = new StringBuffer(str.toLowerCase()); int idx = 0; // アンダーバーを検索、アンダーバーがなくなったらループ終了 while ((idx = sb.indexOf("_")) > 0) { // アンダーバーの次の文字を取得 char c = sb.charAt(idx + 1); // アンダーバーの次の文字を大文字に変換 c = Character.toUpperCase(c); // アンダーバーの次の文字を大文字に変更 sb.setCharAt(idx + 1, c); // アンダーバーを削除 sb.deleteCharAt(idx); } // 結果を出力 System.out.println("変換結果出力"); System.out.println(str); System.out.println("↓"); System.out.println(sb.toString()); System.out.println(""); } } } } * 実行結果 変換結果出力 snake_case ↓ snakeCase 変換結果出力 camelCase ↓ camel_case 変換結果出力 SNAKECase ↓ snake_case * 解説  データベースのカラム名はスネークケース、Javaの変数名はキャメルケースで記述することが多いのですが、職場の eclipse やエディタには変換機能がなかったので作ってみたサンプルです。  実際にこのサンプルを使う場合は変換結果のみほしいと思われるので、変換結果出力の部分を少々いじってください。同様のサンプルを、正規表現で作成している方がいたのですが、そちらを参考に「DAOClass」を「dao_class」に変換できるように修正しました。  参考 [[キャメルケース表記を正規表現でアンダースコア区切り表記に変換 - eller's blog>http://eller86.hatenablog.jp/entry/20081130/1228026182]] 管理人はまだまだ使いこなせていませんが、正規表現ってほんとうに素晴らしいですね。

表示オプション

横に並べて表示:
変化行の前後のみ表示: