こんにちは、さるまりんです🐒
今回は、Javaでよく使われる文字列処理の中でも、String.join()
と正規表現(replaceAll()
/ Pattern
/ Matcher
)を使ってみたいと思います。
文字列の整形や抽出、リストからの出力やHTMLタグの削除など、「これ、毎回同じような処理書いてるな〜」をスッキリ解決できたらいいな。
String.join() の使い所
リストを区切り文字で結合
List<String> fruits = List.of("apple", "banana", "orange");
String result = String.join(", ", fruits);
System.out.println(result); // apple, banana, orange
改行やタブで連結(ログやテキスト出力に便利)
List<String> logs = List.of("Start process", "Fetching data", "Done");
String joined = String.join("\n", logs);
System.out.println(joined);
replaceAll()と正規表現の便利な使い方
英数字以外を削除(データクレンジング)
String raw = "abc123-!?あいうえお";
String cleaned = raw.replaceAll("[^a-zA-Z0-9]", "");
System.out.println(cleaned); // abc123
HTMLタグを削除
String html = "<p>Hello <b>World</b></p>";
String text = html.replaceAll("<[^>]+>", "");
System.out.println(text); // Hello World
空白・改行をまとめて消す
String messy = "Line1\n\tLine2 \nLine3";
String cleaned = messy.replaceAll("\\s+", " ");
System.out.println(cleaned); // Line1 Line2 Line3
Pattern / Matcher での抽出処理
メールアドレスの抽出
String input = "お問い合わせ: test@example.com までご連絡ください。";
Pattern pattern = Pattern.compile("[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\\.[a-zA-Z]{2,}");
Matcher matcher = pattern.matcher(input);
if (matcher.find()) {
System.out.println("メールアドレス: " + matcher.group());
} else {
System.out.println("メールアドレスが見つかりませんでした。");
}
処理例のまとめです。
CSV出力はjoin()
でString.join(",", items)
ログ整形はjoin()
+ 改行でString.join("\n", logs)
入力クリーニングはreplaceAll()
でreplaceAll("[^\\w]", "")
HTML除去もreplaceAll()
でreplaceAll("<[^>]+>", "")
パターン抽出(メールアドレス、URL抽出など)はPattern
+ Matcher
を使って
おまけ:String.join()とPHPのimplodeとの比較
PHP経験者には、String.join()
はPHPのimplode()
と同じような感覚で使えます!
配列をカンマで結合
Java
String.join(",", list)
PHP
implode(",", $array)
改行付きでログを整形
Java
String.join("\n", logs)
PHP
implode("\n", $logs)
タブ区切りで出力
Java
String.join("\t", fields)
PHP
implode("\t", $fields)
どちらも配列やリストを簡潔に出力形式へ変換できるため、ログ・CSV・レスポンス整形などにとても便利です。
String.join()
を使えば、リストや配列の文字列結合がシンプルに、replaceAll()
は正規表現で不要な文字を一括削除、Pattern
/ Matcher
を使えばさらに複雑な抽出や検証にも使えます。
日々の開発で「なんとなく書いてる処理」を、もう一歩綺麗に整理するきっかけになりました!
もっと勉強しなければ🐒
読んでくださってありがとうござました。
それではまた!