JavaのreplaceAllで、対象文字が先頭の場合にのみ置換

JavaのreplaceAllで、対象文字が先頭の場合にのみ置換

JavaのreplaceAllメソッドを使用して、文字列の先頭にある特定の文字列だけを置換する方法について説明します。
このメソッドは正規表現を使用するため、先頭にある文字列を指定するには正規表現のアンカーを使用します。

1. 正規表現の基礎

replaceAllメソッドでは、文字列のすべての出現部分を正規表現に基づいて置換します。
文字列の先頭を指定するには、正規表現の^を使用します。
^は文字列の先頭を示すアンカーです。

2. コードの例

以下に、先頭にある文字列のみを置換するJavaのサンプルコードを示します。

public class Main {
  public static void main(String[] args) {
    String originalText = "prefixHello World! prefixHello Universe!";
    String replacedText = originalText.replaceAll("^prefix", "newPrefix");

    System.out.println("Original Text: " + originalText);
    System.out.println("Replaced Text: " + replacedText);
  }
}

3. 解説

上記のコードでは、originalTextに含まれる文字列の先頭にprefixがある場合のみ、これをnewPrefixに置換します。
ここで、replaceAllメソッドは正規表現を使用して文字列を操作します。
具体的には:

  • ^prefixは、文字列がprefixで始まる場合にマッチします。
  • replaceAll("^prefix", "newPrefix")は、文字列の先頭にprefixがある場合にnewPrefixに置換します。

この方法では、originalText内の先頭のprefixのみがnewPrefixに置換されます。
他のprefixは影響を受けません。
例えば、originalTextが"prefixHello World! prefixHello Universe!"の場合、replaceAllメソッドの結果は"newPrefixHello World! prefixHello Universe!"となります。

4. 先頭以外の部分も置換したい場合

もし、文字列の先頭にprefixがあれば、prefixを含む他の部分も置換したい場合、正規表現を変更する必要があります。
その場合、正規表現の^を取り除き、文字列全体を検索するようにします。

public class Main {
  public static void main(String[] args) {
    String originalText = "prefixHello World! prefixHello Universe!";
    String replacedText = originalText.replaceAll("prefix", "newPrefix");

    System.out.println("Original Text: " + originalText);
    System.out.println("Replaced Text: " + replacedText);
  }
}

このコードでは、文字列内のすべてのprefixがnewPrefixに置換されます。

5. まとめ

  • replaceAllメソッドは、正規表現を使用して文字列を置換します。
  • 文字列の先頭にある特定の文字列を置換するには、^を用いた正規表現を使用します。
  • 上記の例では、先頭のprefixのみが置換され、他のprefixはそのまま残ります。

これにより、文字列の先頭に限定して置換を行う方法が理解できると思います。