2017-02-18 3 views
1

私は、2つの文字列を比較するためのプログラムを書く不一致ビットを選ぶ、とに置き換えるしようとしている「 - 」。2つの文字列を比較し、一致しない文字を - と置き換えるにはどうすればよいですか?

EX)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

私は、2つの文字列が同じ長さであることを前提にしているので、go( "feed"、 "deed")は "-eed"を返します。 – Lee

+0

なぜ 'ch = a.charAt(i)'を使うのですか?そして 'c = c + a.charAt(i)'の代わりに 'c = c + String.valueOf(ch)'ですか? –

答えて

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

関連する問題