【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() + 正規表現: コードが短くシンプルで、可読性に優れる。
用途や好みに応じて、最適な方法を選択してください。
-
【Java】JTableのセル内にチェックボックス(JCheckBox)を表示・追加する方法
JTableはJComponentクラスのサブクラスであり、複数の行と列から構成される表形式のデータを表示するためのコンポーネントです。JTable上で値が選択されるとTableModelEventが発生し、このイベントはTableModelListenerインターフェースを実装することで処理できます。 JTableのセル内にチェックボックスを表示したい場合は、テーブルモデルのgetColumnClass()メソッドをオーバーライドし、Boolean.classを返すようにします。こうすることで、Swingは該当する列に対して自動的にチェックボックス(JCheckBox)をセルレンダラーおよび
-
JavaのJMenuからJTabbedPaneに新しいタブを追加する方法
JTabbedPaneとはJTabbedPaneは、JComponentクラスを継承したSwingコンポーネントの一つで、複数のパネルをタブ形式で簡単に切り替えられるようにするUI部品です。各タブには1つのコンポーネントが関連付けられており、そのタブが選択されると対応するコンポーネントが表示されます。JTabbedPaneは、タブが選択されたタイミングでChangeListenerインターフェースを通じてイベントを発生させることができます。JTabbedPaneの主なメソッドには、add()、addTab()、fireStateChanged()、createChangeListener()、