实现的效果示例:
plusOut("12xy34", "xy") → "++xy++"
plusOut("12xy34", "1") → "1+++++"
plusOut("12xy34xyabcxy", "xy") → "++xy++xy+++xy"
plusOut("abXYabcXYZ", "ab") → "ab++ab++++"
plusOut("abXYabcXYZ", "abc") → "++++abc+++"
plusOut("abXYabcXYZ", "XY") → "++XY+++XY+"
plusOut("abXYxyzXYZ", "XYZ") → "+++++++XYZ"
plusOut("--++ab", "++") → "++++++"
plusOut("aaxxxxbb", "xx") → "++xxxx++"
plusOut("123123", "3") → "++3++3"
1、使用StringBuilder和for循环实现
public class Main { public static String plusOut(String str, String word) { StringBuilder out = new StringBuilder(str); for (int i = 0; i < out.length(); ) { if (!str.startsWith(word, i)) out.setCharAt(i++, '+'); else i += word.length(); } return out.toString(); } public static void main(String[] args) { System.out.println(plusOut("12xy34", "xy")); // 输出: "++xy++" System.out.println(plusOut("12xy34", "1")); // 输出: "1+++++" System.out.println(plusOut("12xy34xyabcxy", "xy")); // 输出: "++xy++xy+++xy" System.out.println(plusOut("abXYabcXYZ", "ab")); // 输出: "ab++ab++++" System.out.println(plusOut("abXYabcXYZ", "abc")); // 输出: "++++abc+++" System.out.println(plusOut("abXYabcXYZ", "XY")); // 输出: "++XY+++XY+" System.out.println(plusOut("abXYxyzXYZ", "XYZ")); // 输出: "+++++++XYZ" System.out.println(plusOut("--++ab", "++")); // 输出: "++++++" System.out.println(plusOut("aaxxxxbb", "xx")); // 输出: "++xxxx++" System.out.println(plusOut("123123", "3")); // 输出: "++3++3" } }
2、使用replaceAll和正则表达式实现
public class Main { public static String plusOut(String str, String word) { return str.replaceAll(java.util.regex.Pattern.quote(word), "@" ).replaceAll("[^@]", "+").replaceAll("@", word); } public static void main(String[] args) { System.out.println(plusOut("12xy34", "xy")); // 输出: "++xy++" System.out.println(plusOut("12xy34", "1")); // 输出: "1+++++" System.out.println(plusOut("12xy34xyabcxy", "xy")); // 输出: "++xy++xy+++xy" System.out.println(plusOut("abXYabcXYZ", "ab")); // 输出: "ab++ab++++" System.out.println(plusOut("abXYabcXYZ", "abc")); // 输出: "++++abc+++" System.out.println(plusOut("abXYabcXYZ", "XY")); // 输出: "++XY+++XY+" System.out.println(plusOut("abXYxyzXYZ", "XYZ")); // 输出: "+++++++XYZ" System.out.println(plusOut("--++ab", "++")); // 输出: "++++++" System.out.println(plusOut("aaxxxxbb", "xx")); // 输出: "++xxxx++" System.out.println(plusOut("123123", "3")); // 输出: "++3++3" } }
3、使用正则表达式 \G实现
public class Main { public static String plusOut(String str, String word) { word = java.util.regex.Pattern.quote(word); return str.replaceAll("\\G((?:" + word + ")*+).", "$1+"); } public static void main(String[] args) { System.out.println(plusOut("12xy34", "xy")); // 输出: "++xy++" System.out.println(plusOut("12xy34", "1")); // 输出: "1+++++" System.out.println(plusOut("12xy34xyabcxy", "xy")); // 输出: "++xy++xy+++xy" System.out.println(plusOut("abXYabcXYZ", "ab")); // 输出: "ab++ab++++" System.out.println(plusOut("abXYabcXYZ", "abc")); // 输出: "++++abc+++" System.out.println(plusOut("abXYabcXYZ", "XY")); // 输出: "++XY+++XY+" System.out.println(plusOut("abXYxyzXYZ", "XYZ")); // 输出: "+++++++XYZ" System.out.println(plusOut("--++ab", "++")); // 输出: "++++++" System.out.println(plusOut("aaxxxxbb", "xx")); // 输出: "++xxxx++" System.out.println(plusOut("123123", "3")); // 输出: "++3++3" } }
4、使用stream实现
import java.util.Arrays; import java.util.stream.*; public class Main { public static String plusOut(String str, String word) { return String.join(word, Arrays.stream(str.split(java.util.regex.Pattern.quote(word), -1)) .map((String s) -> s.replaceAll("(?s:.)", "+")) .collect(Collectors.toList())); } public static void main(String[] args) { System.out.println(plusOut("12xy34", "xy")); // 输出: "++xy++" System.out.println(plusOut("12xy34", "1")); // 输出: "1+++++" System.out.println(plusOut("12xy34xyabcxy", "xy")); // 输出: "++xy++xy+++xy" System.out.println(plusOut("abXYabcXYZ", "ab")); // 输出: "ab++ab++++" System.out.println(plusOut("abXYabcXYZ", "abc")); // 输出: "++++abc+++" System.out.println(plusOut("abXYabcXYZ", "XY")); // 输出: "++XY+++XY+" System.out.println(plusOut("abXYxyzXYZ", "XYZ")); // 输出: "+++++++XYZ" System.out.println(plusOut("--++ab", "++")); // 输出: "++++++" System.out.println(plusOut("aaxxxxbb", "xx")); // 输出: "++xxxx++" System.out.println(plusOut("123123", "3")); // 输出: "++3++3" } }