You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.19 09:21:36