Java >> Java tutorial >  >> Tag >> String

Java Erstat n'te forekomststreng

Java Replace nth Occurrence String | Java giver flere metoder til at erstatte en streng. I denne opgave skal vi erstatte den n'te forekomst af en streng i den givne streng.

Lad os først forstå problemet med et eksempel, og så vil vi se løsningsdelen. Et eksempel på Java Replace nth Occurrence String :-

String ="god morgen, god eftermiddag, god aften godnat";
String, der skal erstattes ="god"
String til sted ="dårlig"
Forekomst =3

I den givne streng ønsker vi at erstatte den 3. forekomst af "god" streng med den "dårlige" streng. Efter udskiftning vil den resulterende streng være som nedenfor.

Resultant String ="god morgen, god eftermiddag, dårlig aften godnat";

For at løse dette problem (Java Replace nth Occurrence String) skal vi udføre følgende opgaver:-
1) Find først indekset, hvor streng optræder n'te gang.
2) Erstat strengen ved det givne indeks.

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:-

Indtast streng:god morgen, god eftermiddag, god aften godnat
String, der skal udskiftes:god
Ny streng at placere:Hej
Forekomst:3
Resulterende streng:godmorgen, god eftermiddag, hej aften godnat

Test-tilfælde, når strengen ikke forekommer i den givne streng.

Indtast streng:god morgen, god eftermiddag, god aften godnat
Streng, der skal udskiftes:Hej
Ny streng at placere:Hej
Forekomst:2
“Hej” blev ikke fundet 2 gange i den givne streng
Resulterende streng:god morgen, god eftermiddag, god aften godnat

Test-tilfælde, når strengen forekommer i den givne streng, men forekomstværdierne er større end den faktiske forekomst.

Indtast streng:god morgen, god eftermiddag, god aften godnat
Streng, der skal udskiftes:god
Ny streng til placering:Hej
Forekomst:9
“god” blev ikke fundet 9 gange i den givne streng
Resulterende streng:god morgen, god eftermiddag, god aften godnat

Test-tilfælde, når strengen forekommer i den givne streng, men forekomstværdierne er ugyldige, dvs. negativ eller nul.

Indtast streng:god morgen, god eftermiddag, god aften godnat
String, der skal udskiftes:god
Ny streng til placering:Hej
Forekomst:-5
“god” blev ikke fundet - 5 gange i den givne streng
Resulterende streng:god morgen, god eftermiddag, god aften godnat

I ovenstående eksempel har vi brugt substring() og indexOf() metoden i Java String-klassen. Substring()-metoden i String-klassen bruges til at finde understrengen for den givne streng baseret på indekset. Og metoden indexOf() bruges til at finde indekset for en streng i den givne streng. Hvis en streng ikke forekommer i den givne streng, returnerer indexOf() metoden -1.

For at erstatte nth Occurrence String har vi udviklet 2 metoder i ovenstående eksempel:replaceNthOccurance() og indexOfNthOccurrence(). For at erstatte den n th forekomst streng først skal vi finde indekset, hvor strengen opstod n th gange.

Metoden indexOfNthOccurrence() finder indekset for streng i den givne streng, og den returnerer -1 i følgende tilfælde :-

  • Hvis forekomstværdien er ugyldig, dvs. negativ eller 0.
  • Hvis streng ikke forekommer i den givne streng.
  • Hvis streng findes, men ikke forekommer, de givne forekomsttider.

Metoden replaceNthOccurance() kalder først indexOfNthOccurrence() for at finde indekspositionen. Hvis returværdien er -1, viser den en passende besked om, at strengen ikke eksisterer det givne antal gange, og returnerer den originale streng. Ellers kaldes substring()-metoden for at erstatte strengen. Til sidst returneres den resulterende streng til opkaldsmetoden.


Java tag