Java Replace nth Occurrence String

Java Replace nth Occurrence String | Java provides several methods to replace a string. In this problem, we have to replace the nth occurrence of a string in the given string.

Let us first understand the problem with some examples and then we will see the solution part. An example of Java Replace nth Occurrence String:-

String = “good morning, good afternoon, good evening goodnight”;
String to be replaced = “good”
String to place = “bad”
Occurance = 3

In the given string we want to replace the 3rd occurrence of the “good” string with the “bad” string. After replacement, the resultant string will be as below.

Resultant String = “good morning, good afternoon, bad evening goodnight”;

To solve this problem (Java Replace nth Occurrence String) we have to perform the following tasks:-
1) First find the index where the string occurs the nth time.
2) Replace the string at the given index.

Java Replace nth Occurrence String

import java.util.Scanner;

public class Main {

   public static void main(String[] args) {
      Scanner scan = new Scanner(System.in);

      System.out.print("Enter String: ");
      String string = scan.nextLine();
      System.out.print("String to be replaced: ");
      String strToReplace = scan.nextLine();
      System.out.print("New string to place: ");
      String newStr = scan.nextLine();
      System.out.print("Occurance: ");
      int occurance = scan.nextInt();

      String replacedString = 
         replaceNthOccurance(string, strToReplace, newStr, occurance);

      System.out.println("Resultant String: " + replacedString);
      scan.close();
   }

   public static String replaceNthOccurance(String string, 
                 String strToReplace, String newStr, int occurance) {

      int index = indexOfNthOccurrence(string, strToReplace, occurance);
      if (index == -1) {
         System.out.println("\"" + strToReplace + "\" not found " + 
                           occurance + " times in the given string");
         return string;
      }

      return string.substring(0, index) + newStr + 
            string.substring(index + strToReplace.length());
   }

   private static int indexOfNthOccurrence(String string, 
                                    String strToReplace, int n) {
      String tempStr = string;
      int tempIndex = -1;
      int finalIndex = 0;

      for (int occurrence = 0; occurrence < n; ++occurrence) {
         tempIndex = tempStr.indexOf(strToReplace);
         if (tempIndex == -1) {
            finalIndex = 0;
            break;
         }

         tempStr = tempStr.substring(++tempIndex);
         finalIndex += tempIndex;
      }

      return --finalIndex;
   }
}

Output:-

Enter String: good morning, good afternoon, good evening goodnight
String to be replaced: good
New string to place: Hello
Occurance: 3
Resultant String: good morning, good afternoon, Hello evening goodnight

Test-case when the string doesn’t occur in the given string.

Enter String: good morning, good afternoon, good evening goodnight
String to be replaced: Hello
New string to place: Hi
Occurance: 2
“Hello” not found 2 times in the given string
Resultant String: good morning, good afternoon, good evening goodnight

Test-case when the string occurs in the given string but the occurrence value is greater than the actual occurrence.

Enter String: good morning, good afternoon, good evening goodnight
String to be replaced: good
New string to place: Hi
Occurance: 9
“good” not found 9 times in the given string
Resultant String: good morning, good afternoon, good evening goodnight

Test-case when the string occurs in the given string but the occurrence value is invalid i.e. negative or zero.

Enter String: good morning, good afternoon, good evening goodnight
String to be replaced: good
New string to place: Hi
Occurance: -5
“good” not found -5 times in the given string
Resultant String: good morning, good afternoon, good evening goodnight

In the above example, we have used substring() and indexOf() methods of the Java String class. The substring() method of the String class is used to find the substring of the given string based on the index. And the indexOf() method is used to find the index of a string in the given string. If a string doesn’t occur in the given string then indexOf() method returns -1.

To replace the nth Occurrence String we have developed 2 methods in the above example:- replaceNthOccurance() and indexOfNthOccurrence(). To replace the nth occurrence string first we need to find the index where the string occurred nth times.

The indexOfNthOccurrence() method finds the index of the string in the given string and it returns -1 in the following cases:-

  • If the occurrence value is invalid i.e. negative or 0.
  • If the string doesn’t occur in the given string.
  • If string exists but doesn’t occur at the given occurrence times.

The replaceNthOccurance() method first calls the indexOfNthOccurrence() to find the index position. If the return value is -1 then it displays an appropriate message that the string doesn’t exist the given number of times, and returns the original string. Otherwise substring() method is called to replace the string. Finally, the resultant string is returned to the caller method.

If you enjoyed this post, share it with your friends. Do you want to share more information about the topic discussed above or do you find anything incorrect? Let us know in the comments. Thank you!

Leave a Comment

Your email address will not be published. Required fields are marked *