How to replace first occurrence of string in Java

JavaStringReplace

Java Problem Overview


I want to replace first occurrence of String in the following.

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

**If test contains the input as follows it should not replace

  1. See Comments, (with space at the end)
  2. See comments,
  3. See Comments**

I want to get the output as follows,

 Output: this is for some test, help us

Thanks in advance,

Java Solutions


Solution 1 - Java

You can use replaceFirst(String regex, String replacement) method of String.

Solution 2 - Java

You should use already tested and well documented libraries in favor of writing your own code.

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

Javadoc

There's even a version that is case insensitive (which is good).

Maven

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

Credits

My answer is an augmentation of: https://stackoverflow.com/a/10861856/714112

Solution 3 - Java

You can use following statement to replace first occurrence of literal string with another literal string:

String result = input.replaceFirst(Pattern.quote(search), Matcher.quoteReplacement(replace));

However, this does a lot of work in the background which would not be needed with a dedicated function for replacing literal strings.

Solution 4 - Java

Use 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);

OUTPUT:

> this is for some test, help us

Solution 5 - Java

You can use following method.

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;

}

Following link provide examples for replacing first occurrence of string using with and without regular expressions.

Solution 6 - Java

Use String replaceFirst to swap the first instance of the delimiter to something unique:

String input = "this=that=theother"
String[] arr = input.replaceFirst("=", "==").split('==',-1);
String key = arr[0];
String value = arr[1];
System.out.println(key + " = " + value);

Solution 7 - Java

You can also use this method in node.js;

public static String replaceFirstOccurance(String str, String chr, String replacement){
    String[] temp = str.split(chr, 2);
    return temp[0] + replacement + temp[1];
}

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionJagadeeshView Question on Stackoverflow
Solution 1 - JavaAsifView Answer on Stackoverflow
Solution 2 - JavaSridhar SarnobatView Answer on Stackoverflow
Solution 3 - JavaHari KrishnaView Answer on Stackoverflow
Solution 4 - JavaEng.FouadView Answer on Stackoverflow
Solution 5 - Javauser4311153View Answer on Stackoverflow
Solution 6 - JavaThomas BoylesView Answer on Stackoverflow
Solution 7 - JavayılmazView Answer on Stackoverflow