Caution

お使いのブラウザはJavaScriptが実行できない状態になっております。
当サイトはWebプログラミングの情報サイトの為、
JavaScriptが実行できない環境では正しいコンテンツが提供出来ません。
JavaScriptが実行可能な状態でご閲覧頂くようお願い申し上げます。

Java辞典

  1. トップページ
  2. Java辞典
  3. 文字列.replace() / replaceAll() / replaceFirst()

文字列.replace() / replaceAll() / replaceFirst()

文字列内の指定した部分を別の文字列に置換するメソッドです。固定文字列の置換には『replace()』、正規表現を使った置換には『replaceAll()』や『replaceFirst()』を使用します。

構文
// 一致するすべての部分を置換します(固定文字列)。
文字列.replace(CharSequence target, CharSequence replacement);

// 正規表現に一致するすべての部分を置換します。
文字列.replaceAll(String regex, String replacement);

// 正規表現に一致する最初の部分だけを置換します。
文字列.replaceFirst(String regex, String replacement);
メソッド一覧
メソッド概要
replace(CharSequence target, CharSequence replacement)文字列内のすべての targetreplacement に置換した新しい文字列を返します。固定文字列として扱われます。
replaceAll(String regex, String replacement)正規表現 regex に一致するすべての部分を replacement に置換した新しい文字列を返します。
replaceFirst(String regex, String replacement)正規表現 regex に最初に一致した部分だけを replacement に置換した新しい文字列を返します。
サンプルコード
// replace() で固定文字列をすべて置換します。
String str = "りんごとみかんとりんご";
System.out.println(str.replace("りんご", "ぶどう")); // 『ぶどうとみかんとぶどう』と出力されます。

// 特定の文字を削除するために空文字列に置換します。
String spaced = "H e l l o";
System.out.println(spaced.replace(" ", "")); // 『Hello』と出力されます。

// replaceAll() で正規表現を使って置換します。
String text = "電話: 090-1234-5678";
System.out.println(text.replaceAll("[0-9]", "*")); // 『電話: ***-****-****』と出力されます。

// 連続した空白をひとつにまとめます。
String messy = "Hello   Java   World";
System.out.println(messy.replaceAll("\\s+", " ")); // 『Hello Java World』と出力されます。

// replaceFirst() で最初だけ置換します。
String log = "[ERROR] disk full [ERROR] retry";
System.out.println(log.replaceFirst("\\[ERROR\\]", "[WARN]"));
// 『[WARN] disk full [ERROR] retry』と出力されます。

// replace() は固定文字列なので . や * は正規表現として扱われません。
String dotStr = "1.2.3";
System.out.println(dotStr.replace(".", "-")); // 『1-2-3』と出力されます。
概要

『replace()』は固定の文字列を対象に置換を行い、正規表現を解釈しません。そのため .* などの記号をそのままの文字として扱えます。

『replaceAll()』と『replaceFirst()』は正規表現を使った置換に対応しています。バックスラッシュやドル記号など正規表現で特別な意味を持つ文字を置換先に含める場合は、Matcher.quoteReplacement() でエスケープする必要があります。また、繰り返し使用する場合はパフォーマンスのため Pattern.compile() でコンパイル済みパターンを利用することを検討してください。

文字列の検索には『indexOf() / contains()』、文字列の分割には『split()』を使用してください。

記事の間違いや著作権の侵害等ございましたらお手数ですがまでご連絡頂ければ幸いです。