1. 程式人生 > 其它 >java實現 replace方法

java實現 replace方法

思路:先將字串轉換為 char[]陣列 方便操作下標
然後先找到要替換的字串開始的下標 再建立一個新陣列,分別對分割成的三部分進行賦值,最後轉化為String 型別 列印且作為方法返回值返回

public class Solution {
    public static String myreplace(String str, String a, String b) {
        //將要操作的字串轉化為字元陣列;
        char[] val = str.toCharArray();
        char[] s1 = a.toCharArray();
        char
[] s2 = b.toCharArray(); //記錄字串的長度 int len = str.length(); //建立一個儲存新的值的字元陣列 長度為 原來的長度加上要替換的減去目標字元 char[] cur = new char[len + s2.length - s1.length]; //尋找要替換的位置的下標 //index用來遍歷s1 int index = 0; int i = 0; int x = 0; for (i = 0; i <
val.length; i++) { if (val[i] == s1[index]) { if (index == s1.length - 1) { break; } index++; } else { if (val.length - i < s1.length) { break; } //如果不符合 將index賦值為0 繼續下一次的遍歷
index = 0; } } //用x來儲存s1開始的下標 x = i - s1.length + 1; //第一段進行賦值 for (int k = 0; k < x; k++) { cur[k] = val[k]; } //替換部分賦值 //用m來儲存s2的下標 int m = 0; for (int k = x; k < x + s2.length; k++) { cur[k] = s2[m]; m++; //如果m=s2的長度 說明執行完畢 if (m == s2.length) { break; } } //第三段賦值 int n = x + s1.length; for (int k = x + s2.length; k < cur.length; k++) { cur[k] = val[n]; n++; if (n == val.length) { break; } } String s=new String(cur); System.out.println(s.toString()); return s; } public static void main(String[] args) { String s="hello world"; String s1="ld"; String s2="d"; //System.out.println(s.replace(s1,s2).toString()); myreplace(s,s1,s2); } }

執行結果
在這裡插入圖片描述
程式碼可能有bug,有問題請指出。。