Java程序开发需求:识别字符串替换关系并实现指定替换输出
如何找出两个字符串中被替换的片段
嘿,这事儿不难,咱们一步步来解决。首先得明确核心思路:要找到两段字符串里的差异部分,其实就是先找它们的最长公共前缀和最长公共后缀,中间夹着的就是被替换的内容啦。
针对你给出的例子:
String s1="Welcome To Java";
String s2="Wela To Java";
咱们来写个具体的Java程序实现:
public class StringReplacementFinder { public static void main(String[] args) { String s1 = "Welcome To Java"; String s2 = "Wela To Java"; // 找最长公共前缀的长度 int prefixLength = 0; int minLength = Math.min(s1.length(), s2.length()); while (prefixLength < minLength && s1.charAt(prefixLength) == s2.charAt(prefixLength)) { prefixLength++; } // 找最长公共后缀的长度 int suffixLength = 0; while (suffixLength < minLength - prefixLength && s1.charAt(s1.length() - 1 - suffixLength) == s2.charAt(s2.length() - 1 - suffixLength)) { suffixLength++; } // 提取被替换的部分和替换后的部分 String originalSubstring = s1.substring(prefixLength, s1.length() - suffixLength); String replacedSubstring = s2.substring(prefixLength, s2.length() - suffixLength); // 输出结果 System.out.println(originalSubstring + "被" + replacedSubstring + "替换"); } }
代码解释:
- 公共前缀查找:从字符串开头逐个字符对比,直到找到第一个不同的字符,这个位置就是差异的起始点。
- 公共后缀查找:从字符串末尾往前逐个字符对比,找到最后一个相同的字符,确定差异的结束点。
- 提取子串:用前缀结束位置和后缀开始位置,分别从两个原字符串中截取出差异部分,就是被替换的内容和替换后的内容。
运行这个程序,就会输出你想要的:come被a替换。
另外,这个方法也适用于其他类似的字符串替换对比场景,只要两个字符串的主体大部分相同,只有中间一段不同,都能准确找出替换的片段~
内容的提问来源于stack exchange,提问作者Ranjan
相关产品推荐
相关产品推荐

