2013-06-29 233 views
2

子字符串的所有出現我有這個java代碼替換字符串替換的Java

String s3="10100111001"; 
    String s4="1001"; 
    String s5="0"; 
    System.out.println(s3); 
    int last_index=3; //To replace only the last 

    while(last_index>=0) { 
     last_index=s3.indexOf(s4,last_index); 
     System.out.println("B:" +last_index); 
     if(last_index>=0) 
     { 

      s3=s3.replace(s3.substring(last_index,(last_index+s4.length())),s5); 
      last_index=last_index+s4.length(); 
      System.out.println("L:"+last_index); 
      continue; 
     } 

     else 
     { 
      continue; 
     } 

    } 
    System.out.println(s3); 

理想的情況下,此代碼應只替換的1001的最後一次出現,但其更換的1001

的出現我的兩個輸出爲10010,但應該是10100110。我哪裏錯了?

+3

你爲什麼不只是使用'.lastIndexOf()'找到最後發生? – fge

+0

如果有兩個以上,它出錯了嗎?我想在指定的索引 – user2133404

回答

0

表達

s3.substring(last_index,(last_index+s4.length())) 

返回"1001"字符串。使用該字符串作爲參數調用replace將在整個字符串中執行替換,因此它將替換這兩個事件。

要解決您的解決方案,你可以用三個子組成取代的replace電話:

  • 從零到last_index
  • s5
  • last_index+4到最後。

像這樣:

s3=s3.substring(0, last_index) + s5 + s3.substring(last_index+s4.length()); 
+0

替換子字符串那麼如何修改代碼,以便只有指定的部分被替換? – user2133404