Java删除String中出现的所有单词

时间:2017-05-31 11:39:26

标签: java string replace substring

我试图在每次出现在字符串中时删除“再见”这个词。它首次出现“再见”,但随后开始删除错误的字符。

String str = "HiByeHiByeByByeHiHiHi";
StringBuilder sb = new StringBuilder(str);
    for(int i=0; i<str.length()-2; i++){
        if(str.substring(i,i+3).equals("Bye")){
            sb.delete(i,i+3);
        }
    }
    System.out.println(sb.toString());
}

4 个答案:

答案 0 :(得分:1)

您可以使用replaceAll。

String str = "HiByeHiByeByByeHiHiHi";
System.out.println(str.replaceAll("Bye", "")); 

它将打印:

  

HiHiByHiHiHi

答案 1 :(得分:1)

无需使用StrinBuilder,String#replace可以执行此操作,只需使用方法replace

String str = "HiByeHiByeByByeHiHiHi";
str = str.replace("Bye", "");
System.out.println(str);

答案 2 :(得分:0)

为什么你不使用String::replace方法,你可以一次性替换所有的事件:

str.replace("Bye", "")

所以你需要这个:

String str = "HiByeHiByeByByeHiHiHi";
System.out.println(str.replace("Bye", ""));

<强>输出

HiHiByHiHiHi

答案 3 :(得分:0)

代码中的一些问题

  • str仍然使用,但它是一个不变的,它应该是sb而不是
  • 如果删除或if更改while

    ,我必须减少
    String str = "HiByeHiByeByByeHiHiHi";
    StringBuilder sb = new StringBuilder( str );
    for ( int i = 0 ; i < sb.length() - 2 ; i++ ) {
        while ( sb.substring( i, i + 3 ).equals( "Bye" ) ) {
            sb.delete( i, i + 3 );
        }
    }
    System.out.println( sb.toString() );