yucatio@システムエンジニア

趣味で作ったものいろいろ

【Java】キャメルケース→スネークケースに変換するプログラム

キャメルケース(camelCase)からスネークケース(snake_case)に変換するJavaのプログラムです。

  public static String toSnakeCase(String text) {
    if (text == null) {
      return null;
    }
    if ("".equals(text)) {
      return "";
    }

    StringBuilder sb = new StringBuilder(text.length());

    sb.append(Character.toLowerCase(text.charAt(0)));

    for (char c : text.substring(1).toCharArray()) {
      if (Character.isUpperCase(c)) {
        sb.append("_").append(Character.toLowerCase(c));
      } else {
        sb.append(c);
      }
    }

    return sb.toString();
  }

簡単に解説すると、

  1. nullと空文字の場合は、それぞれnull, 空文字を返す
  2. 1文字目を小文字に変換してバッファに格納する
  3. 2文字目から最後まで順にみていって、大文字が現れたらアンダーバーと小文字に変換した文字をバッファに詰める。小文字ならそのまま詰める。
  4. バッファの文字を書き出して終了

実行してみます

System.out.println(toSnakeCase("a")); // a
System.out.println(toSnakeCase("oneTwoThree")); // one_two_three