Java >> Tutoriel Java >  >> Tag >> String

Java Remplacer la nième chaîne d'occurrence

Java remplace la nième chaîne d'occurrence | Java fournit plusieurs méthodes pour remplacer une chaîne. Dans ce problème, nous devons remplacer la nième occurrence d'une chaîne dans la chaîne donnée.

Commençons par comprendre le problème avec quelques exemples, puis nous verrons la partie solution. Un exemple de Java Remplacer la nième chaîne d'occurrence :-

Chaîne ="bonjour, bon après-midi, bonsoir bonsoir" ;
Chaîne à remplacer ="bon"
Chaîne à placer ="mauvais"
Occurence =3

Dans la chaîne donnée, nous voulons remplacer la 3ème occurrence de la "bonne" chaîne par la "mauvaise" chaîne. Après le remplacement, la chaîne résultante sera comme ci-dessous.

Chaîne résultante ="bonjour, bon après-midi, mauvais soir bonsoir" ;

Pour résoudre ce problème (Java Replace nth Occurrence String), nous devons effectuer les tâches suivantes :-
1) Premièrement, trouvez l'index où la chaîne apparaît nième fois.
2) Remplacez la chaîne à l'index donné.

Java remplace la nième chaîne d'occurrence

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;
   }
}

Sortie :-

Saisissez la chaîne :bonjour, bon après-midi, bonsoir bonne nuit
Chaîne à remplacer :bon
Nouvelle chaîne à placer :bonjour
Occurrence :3
Chaîne résultante :bonjour, bon après-midi, bonjour bonsoir

Cas de test lorsque la chaîne n'apparaît pas dans la chaîne donnée.

Entrez la chaîne :bonjour, bon après-midi, bonsoir, bonsoir
Chaîne à remplacer :Bonjour
Nouvelle chaîne à placer :Salut
Occurrence :2
« Bonjour » n'a pas été trouvé 2 fois dans la chaîne donnée
Chaîne résultante :bonjour, bon après-midi, bonsoir bonne nuit

Cas de test lorsque la chaîne apparaît dans la chaîne donnée mais que les valeurs d'occurrence sont supérieures à l'occurrence réelle.

Saisissez la chaîne :bonjour, bon après-midi, bonsoir, bonne nuit
Chaîne à remplacer :bon
Nouvelle chaîne à placer :bonjour
Occurrence :9
"bon" introuvable 9 fois dans la chaîne donnée
Chaîne résultante :bonjour, bon après-midi, bonsoir bonne nuit

Cas de test lorsque la chaîne apparaît dans la chaîne donnée mais que les valeurs d'occurrence sont invalides, c'est-à-dire négatives ou nulles.

Entrez la chaîne :bonjour, bon après-midi, bonsoir, bonne nuit
Chaîne à remplacer :bon
Nouvelle chaîne à placer :Salut
Occurrence :-5
"bon" introuvable - 5 fois dans la chaîne donnée
Chaîne résultante :bonjour, bon après-midi, bonsoir bonne nuit

Dans l'exemple ci-dessus, nous avons utilisé les méthodes substring() et indexOf() de la classe Java String. La méthode substring() de la classe String est utilisée pour trouver la sous-chaîne de la chaîne donnée en fonction de l'index. Et la méthode indexOf() est utilisée pour trouver l'index d'une chaîne dans la chaîne donnée. Si une chaîne n'apparaît pas dans la chaîne donnée, la méthode indexOf() renvoie -1.

Pour remplacer la nième chaîne d'occurrences, nous avons développé 2 méthodes dans l'exemple ci-dessus :- replaceNthOccurance() et indexOfNthOccurrence(). Pour remplacer le n ième chaîne d'occurrence, nous devons d'abord trouver l'index où la chaîne s'est produite n ième fois.

La méthode indexOfNthOccurrence() trouve l'index de la chaîne dans la chaîne donnée et elle renvoie -1 dans les cas suivants :-

  • Si la valeur d'occurrence n'est pas valide, c'est-à-dire négative ou 0.
  • Si la chaîne n'apparaît pas dans la chaîne donnée.
  • Si la chaîne existe mais ne se produit pas aux heures d'occurrence indiquées.

La méthode replaceNthOccurance() appelle d'abord indexOfNthOccurrence() pour trouver la position de l'index. Si la valeur de retour est -1, il affiche un message approprié indiquant que la chaîne n'existe pas le nombre de fois donné et renvoie la chaîne d'origine. Sinon, la méthode substring() est appelée pour remplacer la chaîne. Enfin, la chaîne résultante est renvoyée à la méthode appelante.


Balise Java