简体   繁体   中英

Replacing a substring of a string using java

Given three strings S, S1, and S2 consisting of N, M, and K characters respectively, the task is to modify the string S by replacing all the substrings S1 with the string S2 in the string S.

Example: Input: S = “abababa”, S1 = “aba”, S2 = “a” Output: aba

Below is the implementation of the above approach given to us:

import java.util.Scanner;

public class stringint {
    public static void substring(String s, String s1,String s2) {
        String ans = "";
        for (int i = 0; i < s.length(); i++) {
            int k = 0;
            if (s.charAt(i) == s1.charAt(k) && i+s1.length() <= s.length()) {
                int j;
                for (j = i; j < i+s1.length(); j++) {
                    if (s.charAt(j) != s1.charAt(k)) {
                        break;
                    }
                    else {
                        k = k + 1;
                    }
                }
                if (j == i + s1.length()) {
                    ans += (s2);
                    i = j - 1;
                }
                else {
                    ans += (s.charAt(i));
                }
            }
            else {
                ans += (s.charAt(i));
            }
        }
        System.out.println(ans);
    }

    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        System.out.println("Enter the string s:");
        String s = sc.next();
        System.out.println("Enter the string s1:");
        String s1 = sc.next();
        System.out.println("Enter the string s2:");
        String s2 = sc.next();
        substring(s, s1, s2);
    }
}

As a result, the preceding code replaces the substring from the string. But I don't understand how the code works or how it performs the desired task of replacing the substring.

why you are not using replaceAll method here? Is there any specific reason for this?

import java.util.Scanner;

public class stringint {

    public static void substring(String s, String s1,String s2){
     
    s = s.replaceAll("(?i)"+s1,s2);

        System.out.println(s);
    
    }
        public static void main(String[] args) {
            Scanner sc= new Scanner(System.in);
            System.out.println("Enter the string s:");
            String s=sc.next();
            System.out.println("Enter the string s1:");
            String s1= sc.next();
            System.out.println("Enter the string s2:");
            String s2=sc.next();
            substring(s,s1,s2);


    }
}

Above mentioned code will be doing the same thing using repaceAll method.

You could refer to below link to find multiple different util approaches to solve this.

Ref: https://www.baeldung.com/java-remove-replace-string-part

I would say using replaceAll() with regex specified would be the better solution.

s.replaceAll(regexTarget, replacement);

You can also make it work by ignoring case sensitivity.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM