Java
 Computer >> コンピューター >  >> プログラミング >> Java

【Java】文字列内の各大文字の前にアンダースコアを挿入する方法

はじめに

Javaでは、キャメルケースの文字列(例:「HelloHowAreYouWelcome」)に対して、各大文字の直前にアンダースコア「_」を挿りたい場面があります。本記事では、代表的な2つの実装方法——StringBufferクラスを使う方法正規表現を使う方法——をサンプルコード付きで解説します。

方法1:StringBufferクラスを使用する

StringBufferを使って各大文字の前にアンダースコアを追加するには、以下の手順で処理を行います。

  • まず、空のStringBufferオブジェクトを作成します。

  • CharacterクラスのisUpperCase()メソッドは、引数として渡された文字が大文字かどうかを判定し、大文字であればtrueを返します。このメソッドを使って、文字列内の各文字を先頭から順にチェックします。

  • 大文字だった場合は、append()メソッドでその文字の直前にアンダースコアを追加してから連結します。小文字の場合はそのまま連結します。

サンプルコード

public class Adding_BeforeCapital {
    public static void main(String args[]) {
        String str = "HelloHowAreYouWelcome";
        StringBuffer sb = new StringBuffer();
        for (int i = 0; i < str.length(); i++) {
            if(Character.isUpperCase(str.charAt(i))) {
                sb.append("_");
                sb.append(str.charAt(i));
            } else {
                sb.append(str.charAt(i));
            }
        }
        String result = sb.toString();
        System.out.println(result);
    }
}

実行結果

_Hello_How_Are_You_Welcome

方法2:正規表現を使用する

StringクラスのreplaceAll()メソッドは、第1引数に正規表現パターン、第2引数に置換後の文字列を受け取り、マッチした部分をすべて置き換えます。大文字を表すパターン「[A-Z]」を利用することで、各大文字の前にアンダースコアを挿入できます。こちらの方法なら、ループ処理を書く必要がなく、1行で簡潔に実装できるのが魅力です。

サンプルコード

public class Adding_BeforeCapital {
    public static void main(String args[]) {
        String str = "HelloHowAreYouWelcome";
        String result = str.replaceAll("()([A-Z])", "$1_$2");
        System.out.println(result);
    }
}

実行結果

_Hello_How_Are_You_Welcome

まとめ

文字列内の各大文字の前にアンダースコアを追加するには、次の2つの方法が有効です。

  • StringBuffer + isUpperCase(): 処理の流れが明確で、条件に応じた柔軟な加工にも対応しやすい。

  • replaceAll() + 正規表現: コードが短くシンプルで、可読性に優れる。

用途や好みに応じて、最適な方法を選択してください。

  1. 【Java】JTableのセル内にチェックボックス(JCheckBox)を表示・追加する方法

    JTableはJComponentクラスのサブクラスであり、複数の行と列から構成される表形式のデータを表示するためのコンポーネントです。JTable上で値が選択されるとTableModelEventが発生し、このイベントはTableModelListenerインターフェースを実装することで処理できます。 JTableのセル内にチェックボックスを表示したい場合は、テーブルモデルのgetColumnClass()メソッドをオーバーライドし、Boolean.classを返すようにします。こうすることで、Swingは該当する列に対して自動的にチェックボックス(JCheckBox)をセルレンダラーおよび

  2. JavaのJMenuからJTabbedPaneに新しいタブを追加する方法

    JTabbedPaneとはJTabbedPaneは、JComponentクラスを継承したSwingコンポーネントの一つで、複数のパネルをタブ形式で簡単に切り替えられるようにするUI部品です。各タブには1つのコンポーネントが関連付けられており、そのタブが選択されると対応するコンポーネントが表示されます。JTabbedPaneは、タブが選択されたタイミングでChangeListenerインターフェースを通じてイベントを発生させることができます。JTabbedPaneの主なメソッドには、add()、addTab()、fireStateChanged()、createChangeListener()、