2017-02-18 2 views
1

Ich versuche, ein Programm zu schreiben, zwei Strings zu vergleichen, die unpassenden Bits herausgreifen, und ersetzen sie durch „-“.Wie zwei Zeichenketten zu vergleichen und nicht übereinstimmende Buchstaben mit -?

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

Hier ist, was ich mit so weit habe kommen :

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

Warum dem Tag JavaScript? Versuchen Sie, strikt nach der Position der Buchstaben zu suchen, oder würden Sie ("boo", "whoo") 'return' "--oo" '? – nnnnnn

+0

Ich mache das auf der Annahme, dass die beiden Strings die gleiche Länge haben, also würde ("feed", "ded") "-eed" zurückgeben. – Lee

+0

Warum verwenden Sie 'ch = a.charAt (i)'. Und dann 'c = c + String.valueOf (ch)' statt nur 'c = c + a.charAt (i)'? –

Antwort

0

eine StringBuilder nutzen, um schnell und einfach eine Zeichenfolge mutieren, und ihn dann wieder toString() Wert. Sie können setCharAt verwenden, um die Zeichen bei bestimmten Indizes zu ändern.

Dieser Code setzt voraus, dass str1.length() == str2.length() als Voraussetzung.

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

Sie können dies tun, mit regex:

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("-")); 

Ausgabe:

-oo

Verwandte Themen