0

我想创建一个名为 filterOut 的方法,它接受两个字符串作为参数并返回第一个字符串,并删除了第二个字符串的所有实例。例如:filterOut("你好,我的朋友,你好吗?" , "h"); 返回“你好,我的朋友,你好吗?” 和 filterOut("abchelloabcfriendabc" , "abc"); 返回“你好朋友”

    public static String filterOut(String phrase, String second){
         int counter = 0;
         int length = phrase.length();
         String filtered = "";
         while(counter < length){
             String letter = phrase.substring(counter, counter + 1);
             if(!letter.equals(second)){
                 filtered = filtered + letter;
             }
             counter++;
         }
         return filtered;

    public static void main(String args[]){
         String next = filterOut("hello my friend, how are you?" , "h");
         System.out.println(next);                     
     }

当我在 main 方法中使用它时,此代码仅适用于第一个示例。我怎样才能让它也适用于第二个例子?

4

2 回答 2

0

你可以简单地做:

str1.replace(str2, "");

或者在你的例子中,

second.replace(phrase, "");

另外:没有必要为此编写一个方法,当已经有一个时:-)

于 2013-03-25T04:07:25.077 回答
0

您可以使用替换

public static String filterOut(String phrase) {
    return phrase.replace(phrase, "");
}

编辑:您也可以使用拆分方法

public static String filterOut(String phrase, String second) {
    String filtered = "";
    for (String each : phrase.split(second)) {
        filtered = filtered + each;
    }
    return filtered;
}

您的方法不起作用,因为您在下面一行中逐个字符地比较。所以这就是为什么它filterOut("hello my friend, how are you?" , "h");适用于输入而不适用于输入filterOut("abchelloabcfriendabc" , "abc");

 String letter = phrase.substring(counter, counter + 1);
 if(!letter.equals(second)){
     filtered = filtered + letter;
 }
于 2013-03-25T04:08:48.183 回答