比较两个字符串并替换匹配项

Compare two strings and replace matches

我是 Java 的新手,我有以下任务:

Compare string 1 to string 2 letter by letter and find those that match and replace them with *.

我完全迷路了,需要一些帮助。这是我自己整理的一些代码。

Scanner sc = new Scanner(System.in);
String str1 =  sc.nextLine();
String str2 =  sc.nextLine();
        
char char1 = str1.charAt(0);
char char2 = str2.charAt(0);
        
for(int i=0; i<str1.length();i++){
   if(str2.equals(str1)){
                
   }
}

您的代码在正确的轨道上。我建议在这里使用 StringBuilder 来构建两个替换字符串:

Scanner sc = new Scanner(System.in);
String str1 =  sc.nextLine();
String str2 =  sc.nextLine();

StringBuilder sb1 = new StringBuilder();
StringBuilder sb2 = new StringBuilder();

for (int i=0; i < str1.length(); i++) {
    char char1 = str1.charAt(i);
    char char2 = str2.charAt(i);
    if (char1 == char2) {
        sb1.append('*');
        sb2.append('*');
    }
    else {
        sb1.append(char1);
        sb2.append(char2);
    }
}

System.out.println("New string1 is: " + sb1.toString());
System.out.println("New string2 is: " + sb2.toString());

请注意,此答案假定两个输入字符串的长度相同。它不会尝试对此进行检查,也不会考虑两个不等长字符串的行为。

试试这个。

public static void main(String[] args) {
    Scanner sc = new Scanner(System.in);
    StringBuilder str1 = new StringBuilder(sc.nextLine());
    StringBuilder str2 = new StringBuilder(sc.nextLine());
    for (int i = 0, size = Math.min(str1.length(), str2.length()); i < size; ++i)
        if (str1.charAt(i) == str2.charAt(i)) {
            str1.setCharAt(i, '*');
            str2.setCharAt(i, '*');
        }
    System.out.println("str1=" + str1 + " str2=" + str2);
}

输入:

abcdefg
cbadex

输出:

str1=a*c**fg str2=c*a**x