文字列(String)で数字(int)のみを抽出する方法いくつかの方法があります。
- 正規表現を使用して、数字ボタン
- for文で数追加
- Streamを利用して、数の追加
最も簡単な方法は、正規表現(Regex)を利用する方法です。 上記の方法を例とともに説明します。
正規表現でInteger抽出
次のコードは、正規表現でIntegerのみを抽出するためのコードです。
replaceAll()
の引数として正規表現と変換する文字列を渡します。
String str = "aaa1234, ^&*2233pp";
String intStr = str.replaceAll("[^0-9]", "");
System.out.println(intStr);
// output: 12342233
"[^0-9]"
は0〜9の数字ではなく、文字列を意味します。
したがって、数字以外の文字を空白( ""
)に変更するようにという意味です。
次のコードも、上記と同じ結果を出力します。
"^\\d"
は "[^0-9]"
の短縮形で意味は同じです。
String str = "aaa1234, ^&*2233pp";
String intStr = str.replaceAll("[^\\d]", "");
System.out.println(intStr);
// output: 12342233
この方法が最もコードが短いので、この方法を使用することをお勧めします。
正規表現について詳しく知りたい場合は、Java - 正規表現(regex)の例を参照してください。
for文で数字を抽出
次のコードは、for文でIntegerのみを抽出するためのコードです。
String str = "aaa1234, ^&*2233pp";
String intStr = "";
for (int i = 0; i < str.length(); i++) {
char ch = str.charAt(i);
if (48 <= ch && ch <= 57) {
intStr += ch;
}
}
System.out.println(intStr);
// output: 12342233
48は、ASCIIで数字の0を意味し、57は、ASCIIで数9を意味します。 つまり、文字列で0〜9の数字のみを抽出するためのコードです。
Streamに数字を抽出
次のコードは、Streamに数字を抽出するためのコードです。 for文とアルゴリズムは同じです。代わりにforを使用せずにStreamを使用して処理しました。
String str = "aaa1234, ^&*2233pp";
IntStream stream = str.chars();
String intStr = stream.filter((ch)-> (48 <= ch && ch <= 57))
.mapToObj(ch -> (char)ch)
.map(Object::toString)
.collect(Collectors.joining());
System.out.println(intStr);
// output: 12342233
参考
Related Posts
- Java - AtomicReference使用方法
- Java - CountDownLatchを使用する方法、および例
- Java - ScheduledThreadPoolExecutor使用方法
- Java - SummaryStatisticsの使用方法(count、min、max、average)
- Java8 - 関数型インタフェース (Functional Interface) について
- Java - String配列をint配列に変換する
- Java - ArrayList要素の値を変更する方法、replaceAll()
- Java - 2つのリストが同じかどうかを比較
- Java - 配列から特定のIndex要素を削除する3つの方法
- Java - HashMapソート、4つの方法
- Java - 文字列を配列に変換する方法
- Java - ArrayListが空であることを確認する3つの方法
- Java - ArrayListの巡回、4つの方法
- Java - ArrayListの最大値、最小 値を見つける
- Java - ArrayListの合計、平均値の計算
- Java - HashMap巡回、3つの方法
- Java - do whileとwhileの違い
- Java - Lambda式と関数型インタフェース
- Java - List empty(null)チェック、3つの方法
- Java - ArrayListの初期化、4つの方法
- Java - Stream.reduce()の使い方と例
- Java - 2つのマップを結合する(merge、putAll)
- Java - java.util.Dateをjava.sql.Dateに変換する
- Java - ArrayListをStringに変換する
- Java - ClassNotFoundExceptionの発生原因と解決策
- Java - 非静的メソッドは静的コンテキストから参照できません
- Java - NoSuchMethodErrorの原因と解決策
- Java - JSONライブラリを使用する方法(JSONObject、JSONArray)
- Java - byte[]配列をFileに保存
- Java - byte[]の配列をStringに変換
- Java - ファイルのアクセス権を確認し、変更
- Java - 一時フォルダ(Temp directory)パスを取得する
- Javaでシェルスクリプトを実行
- Java - Streamを配列に変換する
- Java - リスト重複排除、2つの方法