Javaで文字列と仲良しに:String.join()と正規表現を使って

こんにちは、さるまりんです🐒

今回は、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を使えばさらに複雑な抽出や検証にも使えます。

日々の開発で「なんとなく書いてる処理」を、もう一歩綺麗に整理するきっかけになりました!
もっと勉強しなければ🐒

読んでくださってありがとうござました。

それではまた!