2017-02-18 86 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

相關問題