StringBuffer phrase = new StringBuffer("one two three four");
String substring = "two";
String replacement = "twenty";
// Find start of last occurrence of "two"
int position = phrase.lastIndexOf(substring);
phrase.replace(position, position+substring.length(), replacement);
The first three statements define the original StringBuffer object, the substring to be replaced, and
the string to replace the substring . The next statement uses the lastIndexOf() method to find the position
of the first character of the last occurrence of substring in phrase . The last statement uses the replace()
method to substitute replacement in place of substring . To get the index value for one beyond the last
character of substring , you just add the length of substring to its position index. Because replacement
is a string containing more characters than substring , the length of the string in phrase is increased, and
the new contents are "one twenty three four" .
I have not bothered to insert code to check for the possibility of −1 being returned in the preceding code
fragment, but naturally in a real-world context it is essential to do this to avoid the program being terminated
when the substring is not present.
To insert a string into a StringBuffer object, you use the insert() method of the object. The first argu-
ment specifies the index of the position in the object where the first character is to be inserted. For example,
if buf contains the string "Many hands make light work" , the statement
buf.insert(4, " old");
inserts the string " old" starting at index position 4, so buf contains the string "Many old hands make
light work" after executing this statement.
Many versions of the insert() method accept a second argument of any of the same range of types that
apply to the append() method, so you can use any of the following with the insert() method:
In each case the string equivalent of the second argument is inserted starting at the index position speci-
fied by the first argument.
If you need to insert a subset of an array of type char into a StringBuffer object, you can call the
version of insert() that accepts four arguments, shown below:
insert(int index, char str, int offset, int length)
This method inserts a substring into the StringBuffer object starting at position index . The substring is
the String representation of length characters from the str array, starting at position offset .
If the value of index is outside the range of the string in the StringBuffer object, or the offset
or length values result in illegal indexes for the array str , then an exception of type StringIn-
dexOutOfBounds Exception is thrown.