প্রথম শব্দটি প্রতিস্থাপনের জন্য অনুসন্ধান করুন। যদি এটি স্ট্রিংয়ে থাকে তবে সংঘটন হওয়ার আগে স্ট্রিংয়ের অংশে এবং ঘটনার পরে স্ট্রিংয়ের অংশে পুনরাবৃত্তি করুন।
অন্যথায়, প্রতিস্থাপন করার জন্য পরবর্তী শব্দটি দিয়ে চালিয়ে যান।
একটি নিষ্পাপ বাস্তবায়ন এর মতো দেখতে পারে
public static String replaceAll(String input, String[] search, String[] replace) {
return replaceAll(input, search, replace, 0);
}
private static String replaceAll(String input, String[] search, String[] replace, int i) {
if (i == search.length) {
return input;
}
int j = input.indexOf(search[i]);
if (j == -1) {
return replaceAll(input, search, replace, i + 1);
}
return replaceAll(input.substring(0, j), search, replace, i + 1) +
replace[i] +
replaceAll(input.substring(j + search[i].length()), search, replace, i);
}
নমুনা ব্যবহার:
String input = "Once upon a baz, there was a foo and a bar.";
String[] search = new String[] { "foo", "bar", "baz" };
String[] replace = new String[] { "bar", "baz", "foo" };
System.out.println(replaceAll(input, search, replace));
আউটপুট:
Once upon a foo, there was a bar and a baz.
একটি স্বল্প সংস্করণী সংস্করণ:
public static String replaceAll(String input, String[] search, String[] replace) {
StringBuilder sb = new StringBuilder();
replaceAll(sb, input, 0, input.length(), search, replace, 0);
return sb.toString();
}
private static void replaceAll(StringBuilder sb, String input, int start, int end, String[] search, String[] replace, int i) {
while (i < search.length && start < end) {
int j = indexOf(input, search[i], start, end);
if (j == -1) {
i++;
} else {
replaceAll(sb, input, start, j, search, replace, i + 1);
sb.append(replace[i]);
start = j + search[i].length();
}
}
sb.append(input, start, end);
}
দুর্ভাগ্যক্রমে, জাভা এর String
কোন indexOf(String str, int fromIndex, int toIndex)
পদ্ধতি নেই। আমি indexOf
এখানে প্রয়োগ বাস্তবায়ন বাদ দিয়েছি কারণ এটি সঠিক নয় বলে আমি নিশ্চিত নই, তবে এটি এখানে পোস্ট করা বিভিন্ন সমাধানের মোটামুটি সময় সহ আদর্শের উপর পাওয়া যাবে।
swap(String s1, String s2, String s3)
যা এরs2
সাথে সমস্ত ঘটনাকে অদলবদল করেs3
এবং এর বিপরীতে।