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áč
相关产品推荐
相关产品推荐

