java實現 replace方法
阿新 • • 發佈:2021-01-23
思路:先將字串轉換為 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,有問題請指出。。