从java中的另一个字符串中过滤掉一个字符串的所有实例

时间:2013-03-25 04:00:27

标签: java string methods filter

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

    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方法中使用它时的第一个示例。我怎样才能让它适用于第二个例子呢?

2 个答案:

答案 0 :(得分:0)

您可以这样做:

str1.replace(str2, "");

或者在你的例子中,

second.replace(phrase, "");

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

答案 1 :(得分:0)

您可以使用replace

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

修改: 您也可以使用split方法

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;
 }