2017-02-18 59 views
1

我试图写一个程序来比较两个字符串,挑选出不匹配位,取代他们“ - ”。如何比较两个字符串并用 - 替换不匹配的字母?

前)go("boo" , "foo") returns -oo

下面是我想出迄今:

String go(String a, String b) { 
    String c = ""; 
    String q = "-"; 
    int al = a.length(); 
    for(int i = 0; i < al; i++){ 
    char ch = a.charAt(i); 
    if(b.indexOf(a)!= -1) { 
     c = c + String.valueOf(ch); 
    } else { 
     c = c + q; 
    } 
    } 
return c; 
} 
+1

为什么JavaScript代码?你是否试图严格按照字母的位置进行匹配,还是会“去”(“boo”,“whoo”)'return'“--oo”'? – nnnnnn

+0

我这样做是基于两个字符串长度相同的假设,所以go(“feed”,“deed”)将返回“-eed”。 – Lee

+0

为什么使用'ch = a.charAt(i)'。然后'c = c + String.valueOf(ch)'而不是仅仅执行'c = c + a.charAt(i)'? –

回答

0

使用StringBuilder,以快速,轻松地变异一个字符串,然后返回toString()值。您可以使用setCharAt来更改特定索引处的字符。

此代码假定str1.length() == str2.length()作为前提条件。

public String escapeDifferentCharacters(String str1, String str2) { 
    StringBuilder result = new StringBuilder(str1); 
    for (int i = 0; i < str1.length(); i++) { 
     if (str1.charAt(i) != str2.charAt(i)) { 
      result.setCharAt(i, '-'); 
     } 
    } 
    return result.toString(); 
} 
0

你可以用正则表达式做到这一点:

String str1 = "boo"; 
String str2 = "foo"; 

System.out.println(str1.replaceAll("[^"+str2+"]","-")); 

    (or) 

Pattern p = Pattern.compile("[^"+str1+"]"); 
Matcher m = p.matcher(str2); 
System.out.println(m.replaceAll("-")); 

输出:

-oo

相关问题