2017-11-13 14 views
0

このメソッドは、最初の刺しゅうから2番目の文字列のすべての出現をフィルタリングします。フィルタは大文字と小文字を区別します。 2番目の引数がCATの場合、catをフィルタリングしないでください。2つの文字列パラメータを持ち、文字列を返すfilterというメソッドを作成します。

public static void main(String[] args){  // should filter out the 
    System.out.println("method: filter");  // second string 
    System.out.println(filter("CS221 is terrible", "terrible")); 
    System.out.println(filter("my cat is a nice cat", "cat")); 
    System.out.println(filter("ababababa","ab")); 
    System.out.println(filter("not here", "a")); 
    System.out.println(filter("abababab","ab")); 
    System.out.println(filter("CATcatCAT","CAT")); 
    System.out.println(filter("dark","k")); 
    System.out.println(filter("ususerer", "user")); 
} 
public static String filter (String str, String filter){ 
    String temp = ""; 
    int i = 0; 

    while(i < str.length() && str.indexOf(filter,i) != -1){            
    if(str.indexOf(filter,i)!=-1){ 
     temp+=str.substring(i, str.indexOf(filter,i)); 
    }else{ 
     temp+=str.substring(i,str.length()); 
    } 
    i = str.indexOf(filter, i)+ filter.length(); 
    i++; 
    } 
    return temp; 

} 

コードの出力

CS221 is 
my is a nice 
b 

b 
at 
dar 
us 

の予想される出力

CS221 is 
my is a nice 
a 
not here 
nothing prints at all on this line its just blank 
cat 
dar 
user 
+0

'firstString.replace(secondStringを、 "")を使用することはできません;' – alfasin

+0

ので、どのように私は自分のコードにそれを実装するのでしょうか? –

+0

再び: 'public static String filter(文字列str、文字列フィルタ){return str.replace(filter、" ");}' – alfasin

答えて

0

は、これは完全に正常に動作します。あなたが車輪の再発明している理由を私は知らない

 public static void main(String[] args){  // should filter out the 
    System.out.println("method: filter");  // second string 
    System.out.println(filter("CS221 is terrible", "terrible")); 
    System.out.println(filter("my cat is a nice cat", "cat")); 
    System.out.println(filter("ababababa","ab")); 
    System.out.println(filter("not here", "a")); 
    System.out.println(filter("abababab","ab")); 
    System.out.println(filter("CATcatCAT","CAT")); 
    System.out.println(filter("dark","k")); 
    System.out.println(filter("ususerer", "user")); 
    } 
    public static String filter (String str, String filter) 
    { 
    String temp = ""; 
    int i = 0; 
    if(str.indexOf(filter,i) == -1) 
    { 
     return temp; 
    } 
    else 
    { 
     return str.replace(filter,""); 
    } 

    } 
0

...あなたがなり、オプションの先頭にスペース、取得するために正規表現を使用する必要が

public static String filter (String str, String filter) 
    return str.replaceAll(" ?" + filter, ""); 
} 

"my cat is a nice cat" // input 
"my is a nice"   // output correct as per your question 

普通の交換品、つまりstr.replace(filter, "")を使用すると、この効果が得られます。

"my cat is a nice cat" // input 
"my is a nice "  // incorrect: notice the double spaces 
+0

フィルター文字列に特殊文字が含まれている場合は、おそらく 'Pattern.quote'を使用します。 – DodgyCodeException

0

なぜあなたはreplaceAll

public static String filter(String str, String filter) { 
    return str.replaceAll(filter, "").replaceAll("\\s{2,}", " "); 
} 
関連する問題