範囲指定された数値文字列を展開するJavaプログラムの実装方法
「1-4, 56-57」のように範囲がハイフンで指定された数値文字列を、実際の連続した数値に展開したいケースはよくあります。この記事では、Javaを使ってそのような範囲表記を展開するプログラムの実装方法を解説します。
コード例
public class Demo {
public static void expand_range(String word) {
StringBuilder my_sb = new StringBuilder();
String[] str_arr = word.split(", ");
for (int i = 0; i < str_arr.length; i++){
String[] split_str = str_arr[i].split("-");
if (split_str.length == 2){
int low = Integer.parseInt(split_str[0]);
int high = Integer.parseInt(split_str[split_str.length - 1]);
while (low <= high){
my_sb.append(low + " ");
low++;
}
} else {
my_sb.append(str_arr[i] + " ");
}
}
System.out.println(my_sb.toString());
}
public static void main(String args[]){
String my_str = "1-4, 56-57, 99-101, 0-1";
System.out.println("与えられた数値の展開結果は次の通りです");
expand_range(my_str);
}
}
実行結果
与えられた数値の展開結果は次の通りです 1 2 3 4 56 57 99 100 101 0 1
プログラムの仕組み
このプログラムでは、Demoというクラス内にexpand_rangeメソッドを定義しています。処理の流れは以下の通りです。
1. 文字列の分割:まず、split(", ")メソッドを使って、入力文字列をカンマで区切ります。「1-4」「56-57」といった各要素が配列に格納されます。
2. 範囲の判定と展開:各要素をさらにハイフン(-)で分割します。分割結果が2つの要素(下限値と上限値)を持つ場合、それは範囲指定とみなされます。Integer.parseInt()で文字列を整数に変換し、下限値から上限値まで1ずつ増加させながらStringBuilderに追加していきます。
3. 単一数値の処理:ハイフンが含まれない単独の数値の場合は、そのまま結果に追加されます。
4. 結果の出力:mainメソッドで対象の文字列を定義し、expand_rangeメソッドに引数として渡して呼び出します。最終的な展開結果がコンソールに出力されます。
このように、文字列操作とループ処理を組み合わせることで、範囲表記された数値データを簡単に展開できます。ログ解析やID範囲の処理など、さまざまな場面で応用できるテクニックです。
-
【Java】正規表現で括弧()を含む文字列に一致させる方法とサンプルコード
Javaで文字列の中に括弧「(」や「)」が含まれているかどうかを判定したい場合、正規表現を使うと簡単に実装できます。この記事では、括弧に一致する正規表現の書き方と、実際に動作するサンプルコードを2つのパターンで紹介します。括弧に一致する正規表現以下の正規表現は、括弧を含む文字列を受け入れます。^.*[\\(\\)].*$;このパターンの各要素は次のような意味を持っています。^ … 文字列(行)の先頭に一致します。.* … 0個以上の任意の文字に一致します。[\\(\\)] … 括弧「(」または「)」に一致します。正規表現では括弧は特殊文字のため、バックスラッシュでエスケープする必要があります。
-
Javaで文字列内の母音をカウントする方法をわかりやすく解説
Javaでは、拡張forループと条件分岐を組み合わせることで、文字列に含まれる母音(a、e、i、o、u)の数を簡単にカウントできます。この記事では、基本的な実装方法をサンプルコード付きで解説します。 カウントの仕組み まず、カウント用の変数 count を 0 で初期化します。これは、母音の数をこの変数に加算していくためです。 次に、toCharArray() メソッドを使って文字列を1文字ずつ取り出し、Character.toLowerCase() ですべて小文字に変換します。これにより、大文字・小文字を区別せずに母音を判定できるようになります。 for(char ch : myStr.t