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

Java逐字符比对两字符串并替换匹配字符为*的实现求助

实现思路
  • 首先处理两个字符串长度不一致的边界问题:遍历的最大索引取两个字符串长度的较小值,避免索引越界
  • 由于Java中String是不可变类,无法直接修改单个字符,所以先把需要修改的原字符串转为char[]字符数组操作
  • 遍历过程中逐位比对两个字符串相同索引位置的字符,匹配成功就把字符数组对应位置赋值为*
  • 遍历完成后把字符数组转回String即可得到结果
现有代码问题说明
  • 你声明的char1、char2仅获取了两个字符串的首字符,没有在逻辑中使用,属于无效代码
  • 循环内的str2.equals(str1)是直接判断两个字符串是否完全相等,不符合逐字符比对同位置的需求
完整可运行代码
import java.util.Scanner;

public class StringMatchReplace {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        String str1 =  sc.nextLine();
        String str2 =  sc.nextLine();
        sc.close();
        
        // 转字符数组用于修改,这里以修改str1为例,需要修改str2的话替换为str2.toCharArray()即可
        char[] resultArr = str1.toCharArray();
        // 取两个字符串的较小长度作为遍历边界,避免索引越界
        int minLen = Math.min(str1.length(), str2.length());
        
        for(int i=0; i<minLen; i++){
            // 逐位比对同位置字符
            if(str1.charAt(i) == str2.charAt(i)){
                // 匹配则替换为*
                resultArr[i] = '*';
            }
        }
        
        String result = new String(resultArr);
        System.out.println(result);
    }
}
运行示例

输入:

hello world
hallo wetld

输出:

*ell* *etld

内容的提问来源于stack exchange,提问作者Martin Kopáč

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 07:15:02