Win a copy of Functional Reactive Programming this week in the Other Languages forum!
  • Post Reply
  • Bookmark Topic Watch Topic
  • New Topic

replace char with string

 
peter brews
Ranch Hand
Posts: 59
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
Following piece of code is working only for the first occurence of find string.It is not replacing the second occurence of find string.Could you please help me point out what's worong with this method.
public static String replace(String source,String find,String replace) {
StringBuffer sb = new StringBuffer(source);
int stringLength = source.length();
int start = 0;
int end = 0;
String result="";
int findLength=find.length();

while((end = source.indexOf(find, start)) != -1) {

start = end + findLength;
sb.replace(end,end+findLength,replace);
}
result = sb.toString();
 
Steve Deadsea
Ranch Hand
Posts: 125
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
Your algorithm works only if the string you are trying to find is the same length as the string you are replacing it with. Otherwise, sb.replace() alters the length of the stringbuffer and your start and end get messed up.
Instead of altering a stringbuffer, it would be easier if you built a stringbuffer with substrings from the orignal string.
If you haven't already done so, take a look at my implementation of this function in my StringHelper class:
http://ostermiller.org/utils/StringHelper.html
 
  • Post Reply
  • Bookmark Topic Watch Topic
  • New Topic