web-dev-qa-db-ja.com

Javaで最初に出現した文字列を置換する方法

次の文字列の最初の出現を置き換えたいです。

  String test = "see Comments, this is for some test, help us"

**テストに次のような入力が含まれる場合、置き換えないでください

  1. コメントを参照してください(最後にスペースがあります)
  2. コメントを見る、
  3. コメントを見る**

次のように出力を取得したい

 Output: this is for some test, help us

前もって感謝します、

38
Jagadeesh

Stringの replaceFirst(String regex, String replacement) メソッドを使用できます。

77
Asif

独自のコードを記述するために、テスト済みで十分に文書化されたライブラリを使用する必要があります。

org.Apache.commons.lang3.
  StringUtils.replaceOnce("coast-to-coast", "coast", "") = "-to-coast"

Javadoc

大文字と小文字を区別しないバージョンもあります(これは良いことです)。

メイヴン

<dependency>
    <groupId>org.Apache.commons</groupId>
    <artifactId>commons-lang3</artifactId>
    <version>3.7</version>
</dependency>

クレジット

私の答えは: https://stackoverflow.com/a/10861856/714112 の増強です。

16

substring(int beginIndex) を使用します。

String test = "see Comments, this is for some test, help us";
String newString = test.substring(test.indexOf(",") + 2);
System.out.println(newString);

出力:

これはいくつかのテストのためです、私たちを助けます

14
Eng.Fouad

次のステートメントを使用して、文字列の最初の出現を置き換えることができます。

String result = input.replaceFirst(Pattern.quote(stringToReplace), stringToReplaceWith);

この link には、テストケースを含む完全なプログラムが含まれています。

10
Hari Krishna

次の方法を使用できます。

public static String replaceFirstOccurrenceOfString(String inputString, String stringToReplace,
        String stringToReplaceWith) {

    int length = stringToReplace.length();
    int inputLength = inputString.length();

    int startingIndexofTheStringToReplace = inputString.indexOf(stringToReplace);

    String finalString = inputString.substring(0, startingIndexofTheStringToReplace) + stringToReplaceWith
            + inputString.substring(startingIndexofTheStringToReplace + length, inputLength);

    return finalString;

}

link に続いて、正規表現の有無にかかわらず文字列の最初の出現を置き換える例を示します。

2
user4311153