org.apache.commons.lang.text

Class StrBuilder

public class StrBuilder extends Object implements Cloneable

Builds a string from constituent parts providing a more flexible and powerful API than StringBuffer.

The main differences from StringBuffer/StringBuilder are:

  • Views
  • The aim has been to provide an API that mimics very closely what StringBuffer provides, but with additional methods. It should be noted that some edge cases, with invalid indices or null input, have been altered - see individual methods. The biggest of these changes is that by default, null will not output the text 'null'. This can be controlled by a property, setNullText.

    Since: 2.2

    Version: $Id: StrBuilder.java 627248 2008-02-13 05:44:46Z bayard $

    Author: Stephen Colebourne

    Field Summary
    protected char[]buffer
    Internal data storage.
    protected intsize
    Current size of the buffer.
    Constructor Summary
    StrBuilder()
    Constructor that creates an empty builder initial capacity 32 characters.
    StrBuilder(int initialCapacity)
    Constructor that creates an empty builder the specified initial capacity.
    StrBuilder(String str)
    Constructor that creates a builder from the string, allocating 32 extra characters for growth.
    Method Summary
    StrBuilderappend(Object obj)
    Appends an object to this string builder.
    StrBuilderappend(String str)
    Appends a string to this string builder.
    StrBuilderappend(String str, int startIndex, int length)
    Appends part of a string to this string builder.
    StrBuilderappend(StringBuffer str)
    Appends a string buffer to this string builder.
    StrBuilderappend(StringBuffer str, int startIndex, int length)
    Appends part of a string buffer to this string builder.
    StrBuilderappend(StrBuilder str)
    Appends another string builder to this string builder.
    StrBuilderappend(StrBuilder str, int startIndex, int length)
    Appends part of a string builder to this string builder.
    StrBuilderappend(char[] chars)
    Appends a char array to the string builder.
    StrBuilderappend(char[] chars, int startIndex, int length)
    Appends a char array to the string builder.
    StrBuilderappend(boolean value)
    Appends a boolean value to the string builder.
    StrBuilderappend(char ch)
    Appends a char value to the string builder.
    StrBuilderappend(int value)
    Appends an int value to the string builder using String.valueOf.
    StrBuilderappend(long value)
    Appends a long value to the string builder using String.valueOf.
    StrBuilderappend(float value)
    Appends a float value to the string builder using String.valueOf.
    StrBuilderappend(double value)
    Appends a double value to the string builder using String.valueOf.
    StrBuilderappendAll(Object[] array)
    Appends each item in an array to the builder without any separators.
    StrBuilderappendAll(Collection coll)
    Appends each item in a collection to the builder without any separators.
    StrBuilderappendAll(Iterator it)
    Appends each item in an iterator to the builder without any separators.
    StrBuilderappendFixedWidthPadLeft(Object obj, int width, char padChar)
    Appends an object to the builder padding on the left to a fixed width.
    StrBuilderappendFixedWidthPadLeft(int value, int width, char padChar)
    Appends an object to the builder padding on the left to a fixed width.
    StrBuilderappendFixedWidthPadRight(Object obj, int width, char padChar)
    Appends an object to the builder padding on the right to a fixed length.
    StrBuilderappendFixedWidthPadRight(int value, int width, char padChar)
    Appends an object to the builder padding on the right to a fixed length.
    StrBuilderappendln(Object obj)
    Appends an object followed by a new line to this string builder.
    StrBuilderappendln(String str)
    Appends a string followed by a new line to this string builder.
    StrBuilderappendln(String str, int startIndex, int length)
    Appends part of a string followed by a new line to this string builder.
    StrBuilderappendln(StringBuffer str)
    Appends a string buffer followed by a new line to this string builder.
    StrBuilderappendln(StringBuffer str, int startIndex, int length)
    Appends part of a string buffer followed by a new line to this string builder.
    StrBuilderappendln(StrBuilder str)
    Appends another string builder followed by a new line to this string builder.
    StrBuilderappendln(StrBuilder str, int startIndex, int length)
    Appends part of a string builder followed by a new line to this string builder.
    StrBuilderappendln(char[] chars)
    Appends a char array followed by a new line to the string builder.
    StrBuilderappendln(char[] chars, int startIndex, int length)
    Appends a char array followed by a new line to the string builder.
    StrBuilderappendln(boolean value)
    Appends a boolean value followed by a new line to the string builder.
    StrBuilderappendln(char ch)
    Appends a char value followed by a new line to the string builder.
    StrBuilderappendln(int value)
    Appends an int value followed by a new line to the string builder using String.valueOf.
    StrBuilderappendln(long value)
    Appends a long value followed by a new line to the string builder using String.valueOf.
    StrBuilderappendln(float value)
    Appends a float value followed by a new line to the string builder using String.valueOf.
    StrBuilderappendln(double value)
    Appends a double value followed by a new line to the string builder using String.valueOf.
    StrBuilderappendNewLine()
    Appends the new line string to this string builder.
    StrBuilderappendNull()
    Appends the text representing null to this string builder.
    StrBuilderappendPadding(int length, char padChar)
    Appends the pad character to the builder the specified number of times.
    StrBuilderappendSeparator(String separator)
    Appends a separator if the builder is currently non-empty.
    StrBuilderappendSeparator(char separator)
    Appends a separator if the builder is currently non-empty.
    StrBuilderappendSeparator(String separator, int loopIndex)
    Appends a separator to the builder if the loop index is greater than zero.
    StrBuilderappendSeparator(char separator, int loopIndex)
    Appends a separator to the builder if the loop index is greater than zero.
    StrBuilderappendWithSeparators(Object[] array, String separator)
    Appends an array placing separators between each value, but not before the first or after the last.
    StrBuilderappendWithSeparators(Collection coll, String separator)
    Appends a collection placing separators between each value, but not before the first or after the last.
    StrBuilderappendWithSeparators(Iterator it, String separator)
    Appends an iterator placing separators between each value, but not before the first or after the last.
    ReaderasReader()
    Gets the contents of this builder as a Reader.
    StrTokenizerasTokenizer()
    Creates a tokenizer that can tokenize the contents of this builder.
    WriterasWriter()
    Gets this builder as a Writer that can be written to.
    intcapacity()
    Gets the current size of the internal character array buffer.
    charcharAt(int index)
    Gets the character at the specified index.
    StrBuilderclear()
    Clears the string builder (convenience Collections API style method).
    booleancontains(char ch)
    Checks if the string builder contains the specified char.
    booleancontains(String str)
    Checks if the string builder contains the specified string.
    booleancontains(StrMatcher matcher)
    Checks if the string builder contains a string matched using the specified matcher.
    StrBuilderdelete(int startIndex, int endIndex)
    Deletes the characters between the two specified indices.
    StrBuilderdeleteAll(char ch)
    Deletes the character wherever it occurs in the builder.
    StrBuilderdeleteAll(String str)
    Deletes the string wherever it occurs in the builder.
    StrBuilderdeleteAll(StrMatcher matcher)
    Deletes all parts of the builder that the matcher matches.
    StrBuilderdeleteCharAt(int index)
    Deletes the character at the specified index.
    StrBuilderdeleteFirst(char ch)
    Deletes the character wherever it occurs in the builder.
    StrBuilderdeleteFirst(String str)
    Deletes the string wherever it occurs in the builder.
    StrBuilderdeleteFirst(StrMatcher matcher)
    Deletes the first match within the builder using the specified matcher.
    booleanendsWith(String str)
    Checks whether this builder ends with the specified string.
    StrBuilderensureCapacity(int capacity)
    Checks the capacity and ensures that it is at least the size specified.
    booleanequals(StrBuilder other)
    Checks the contents of this builder against another to see if they contain the same character content.
    booleanequals(Object obj)
    Checks the contents of this builder against another to see if they contain the same character content.
    booleanequalsIgnoreCase(StrBuilder other)
    Checks the contents of this builder against another to see if they contain the same character content ignoring case.
    char[]getChars(char[] destination)
    Copies the character array into the specified array.
    voidgetChars(int startIndex, int endIndex, char[] destination, int destinationIndex)
    Copies the character array into the specified array.
    StringgetNewLineText()
    Gets the text to be appended when a new line is added.
    StringgetNullText()
    Gets the text to be appended when null is added.
    inthashCode()
    Gets a suitable hash code for this builder.
    intindexOf(char ch)
    Searches the string builder to find the first reference to the specified char.
    intindexOf(char ch, int startIndex)
    Searches the string builder to find the first reference to the specified char.
    intindexOf(String str)
    Searches the string builder to find the first reference to the specified string.
    intindexOf(String str, int startIndex)
    Searches the string builder to find the first reference to the specified string starting searching from the given index.
    intindexOf(StrMatcher matcher)
    Searches the string builder using the matcher to find the first match.
    intindexOf(StrMatcher matcher, int startIndex)
    Searches the string builder using the matcher to find the first match searching from the given index.
    StrBuilderinsert(int index, Object obj)
    Inserts the string representation of an object into this builder.
    StrBuilderinsert(int index, String str)
    Inserts the string into this builder.
    StrBuilderinsert(int index, char[] chars)
    Inserts the character array into this builder.
    StrBuilderinsert(int index, char[] chars, int offset, int length)
    Inserts part of the character array into this builder.
    StrBuilderinsert(int index, boolean value)
    Inserts the value into this builder.
    StrBuilderinsert(int index, char value)
    Inserts the value into this builder.
    StrBuilderinsert(int index, int value)
    Inserts the value into this builder.
    StrBuilderinsert(int index, long value)
    Inserts the value into this builder.
    StrBuilderinsert(int index, float value)
    Inserts the value into this builder.
    StrBuilderinsert(int index, double value)
    Inserts the value into this builder.
    booleanisEmpty()
    Checks is the string builder is empty (convenience Collections API style method).
    intlastIndexOf(char ch)
    Searches the string builder to find the last reference to the specified char.
    intlastIndexOf(char ch, int startIndex)
    Searches the string builder to find the last reference to the specified char.
    intlastIndexOf(String str)
    Searches the string builder to find the last reference to the specified string.
    intlastIndexOf(String str, int startIndex)
    Searches the string builder to find the last reference to the specified string starting searching from the given index.
    intlastIndexOf(StrMatcher matcher)
    Searches the string builder using the matcher to find the last match.
    intlastIndexOf(StrMatcher matcher, int startIndex)
    Searches the string builder using the matcher to find the last match searching from the given index.
    StringleftString(int length)
    Extracts the leftmost characters from the string builder without throwing an exception.
    intlength()
    Gets the length of the string builder.
    StringmidString(int index, int length)
    Extracts some characters from the middle of the string builder without throwing an exception.
    StrBuilderminimizeCapacity()
    Minimizes the capacity to the actual length of the string.
    StrBuilderreplace(int startIndex, int endIndex, String replaceStr)
    Replaces a portion of the string builder with another string.
    StrBuilderreplace(StrMatcher matcher, String replaceStr, int startIndex, int endIndex, int replaceCount)
    Advanced search and replaces within the builder using a matcher.
    StrBuilderreplaceAll(char search, char replace)
    Replaces the search character with the replace character throughout the builder.
    StrBuilderreplaceAll(String searchStr, String replaceStr)
    Replaces the search string with the replace string throughout the builder.
    StrBuilderreplaceAll(StrMatcher matcher, String replaceStr)
    Replaces all matches within the builder with the replace string.
    StrBuilderreplaceFirst(char search, char replace)
    Replaces the first instance of the search character with the replace character in the builder.
    StrBuilderreplaceFirst(String searchStr, String replaceStr)
    Replaces the first instance of the search string with the replace string.
    StrBuilderreplaceFirst(StrMatcher matcher, String replaceStr)
    Replaces the first match within the builder with the replace string.
    StrBuilderreverse()
    Reverses the string builder placing each character in the opposite index.
    StringrightString(int length)
    Extracts the rightmost characters from the string builder without throwing an exception.
    StrBuildersetCharAt(int index, char ch)
    Sets the character at the specified index.
    StrBuildersetLength(int length)
    Updates the length of the builder by either dropping the last characters or adding filler of unicode zero.
    StrBuildersetNewLineText(String newLine)
    Sets the text to be appended when a new line is added.
    StrBuildersetNullText(String nullText)
    Sets the text to be appended when null is added.
    intsize()
    Gets the length of the string builder.
    booleanstartsWith(String str)
    Checks whether this builder starts with the specified string.
    Stringsubstring(int start)
    Extracts a portion of this string builder as a string.
    Stringsubstring(int startIndex, int endIndex)
    Extracts a portion of this string builder as a string.
    char[]toCharArray()
    Copies the builder's character array into a new character array.
    char[]toCharArray(int startIndex, int endIndex)
    Copies part of the builder's character array into a new character array.
    StringtoString()
    Gets a String version of the string builder, creating a new instance each time the method is called.
    StringBuffertoStringBuffer()
    Gets a StringBuffer version of the string builder, creating a new instance each time the method is called.
    StrBuildertrim()
    Trims the builder by removing characters less than or equal to a space from the beginning and end.
    protected voidvalidateIndex(int index)
    Validates parameters defining a single index in the builder.
    protected intvalidateRange(int startIndex, int endIndex)
    Validates parameters defining a range of the builder.

    Field Detail

    buffer

    protected char[] buffer
    Internal data storage.

    size

    protected int size
    Current size of the buffer.

    Constructor Detail

    StrBuilder

    public StrBuilder()
    Constructor that creates an empty builder initial capacity 32 characters.

    StrBuilder

    public StrBuilder(int initialCapacity)
    Constructor that creates an empty builder the specified initial capacity.

    Parameters: initialCapacity the initial capacity, zero or less will be converted to 32

    StrBuilder

    public StrBuilder(String str)
    Constructor that creates a builder from the string, allocating 32 extra characters for growth.

    Parameters: str the string to copy, null treated as blank string

    Method Detail

    append

    public StrBuilder append(Object obj)
    Appends an object to this string builder. Appending null will call appendNull.

    Parameters: obj the object to append

    Returns: this, to enable chaining

    append

    public StrBuilder append(String str)
    Appends a string to this string builder. Appending null will call appendNull.

    Parameters: str the string to append

    Returns: this, to enable chaining

    append

    public StrBuilder append(String str, int startIndex, int length)
    Appends part of a string to this string builder. Appending null will call appendNull.

    Parameters: str the string to append startIndex the start index, inclusive, must be valid length the length to append, must be valid

    Returns: this, to enable chaining

    append

    public StrBuilder append(StringBuffer str)
    Appends a string buffer to this string builder. Appending null will call appendNull.

    Parameters: str the string buffer to append

    Returns: this, to enable chaining

    append

    public StrBuilder append(StringBuffer str, int startIndex, int length)
    Appends part of a string buffer to this string builder. Appending null will call appendNull.

    Parameters: str the string to append startIndex the start index, inclusive, must be valid length the length to append, must be valid

    Returns: this, to enable chaining

    append

    public StrBuilder append(StrBuilder str)
    Appends another string builder to this string builder. Appending null will call appendNull.

    Parameters: str the string builder to append

    Returns: this, to enable chaining

    append

    public StrBuilder append(StrBuilder str, int startIndex, int length)
    Appends part of a string builder to this string builder. Appending null will call appendNull.

    Parameters: str the string to append startIndex the start index, inclusive, must be valid length the length to append, must be valid

    Returns: this, to enable chaining

    append

    public StrBuilder append(char[] chars)
    Appends a char array to the string builder. Appending null will call appendNull.

    Parameters: chars the char array to append

    Returns: this, to enable chaining

    append

    public StrBuilder append(char[] chars, int startIndex, int length)
    Appends a char array to the string builder. Appending null will call appendNull.

    Parameters: chars the char array to append startIndex the start index, inclusive, must be valid length the length to append, must be valid

    Returns: this, to enable chaining

    append

    public StrBuilder append(boolean value)
    Appends a boolean value to the string builder.

    Parameters: value the value to append

    Returns: this, to enable chaining

    append

    public StrBuilder append(char ch)
    Appends a char value to the string builder.

    Parameters: ch the value to append

    Returns: this, to enable chaining

    append

    public StrBuilder append(int value)
    Appends an int value to the string builder using String.valueOf.

    Parameters: value the value to append

    Returns: this, to enable chaining

    append

    public StrBuilder append(long value)
    Appends a long value to the string builder using String.valueOf.

    Parameters: value the value to append

    Returns: this, to enable chaining

    append

    public StrBuilder append(float value)
    Appends a float value to the string builder using String.valueOf.

    Parameters: value the value to append

    Returns: this, to enable chaining

    append

    public StrBuilder append(double value)
    Appends a double value to the string builder using String.valueOf.

    Parameters: value the value to append

    Returns: this, to enable chaining

    appendAll

    public StrBuilder appendAll(Object[] array)
    Appends each item in an array to the builder without any separators. Appending a null array will have no effect. Each object is appended using append.

    Parameters: array the array to append

    Returns: this, to enable chaining

    Since: 2.3

    appendAll

    public StrBuilder appendAll(Collection coll)
    Appends each item in a collection to the builder without any separators. Appending a null collection will have no effect. Each object is appended using append.

    Parameters: coll the collection to append

    Returns: this, to enable chaining

    Since: 2.3

    appendAll

    public StrBuilder appendAll(Iterator it)
    Appends each item in an iterator to the builder without any separators. Appending a null iterator will have no effect. Each object is appended using append.

    Parameters: it the iterator to append

    Returns: this, to enable chaining

    Since: 2.3

    appendFixedWidthPadLeft

    public StrBuilder appendFixedWidthPadLeft(Object obj, int width, char padChar)
    Appends an object to the builder padding on the left to a fixed width. The toString of the object is used. If the object is larger than the length, the left hand side is lost. If the object is null, the null text value is used.

    Parameters: obj the object to append, null uses null text width the fixed field width, zero or negative has no effect padChar the pad character to use

    Returns: this, to enable chaining

    appendFixedWidthPadLeft

    public StrBuilder appendFixedWidthPadLeft(int value, int width, char padChar)
    Appends an object to the builder padding on the left to a fixed width. The String.valueOf of the int value is used. If the formatted value is larger than the length, the left hand side is lost.

    Parameters: value the value to append width the fixed field width, zero or negative has no effect padChar the pad character to use

    Returns: this, to enable chaining

    appendFixedWidthPadRight

    public StrBuilder appendFixedWidthPadRight(Object obj, int width, char padChar)
    Appends an object to the builder padding on the right to a fixed length. The toString of the object is used. If the object is larger than the length, the right hand side is lost. If the object is null, null text value is used.

    Parameters: obj the object to append, null uses null text width the fixed field width, zero or negative has no effect padChar the pad character to use

    Returns: this, to enable chaining

    appendFixedWidthPadRight

    public StrBuilder appendFixedWidthPadRight(int value, int width, char padChar)
    Appends an object to the builder padding on the right to a fixed length. The String.valueOf of the int value is used. If the object is larger than the length, the right hand side is lost.

    Parameters: value the value to append width the fixed field width, zero or negative has no effect padChar the pad character to use

    Returns: this, to enable chaining

    appendln

    public StrBuilder appendln(Object obj)
    Appends an object followed by a new line to this string builder. Appending null will call appendNull.

    Parameters: obj the object to append

    Returns: this, to enable chaining

    Since: 2.3

    appendln

    public StrBuilder appendln(String str)
    Appends a string followed by a new line to this string builder. Appending null will call appendNull.

    Parameters: str the string to append

    Returns: this, to enable chaining

    Since: 2.3

    appendln

    public StrBuilder appendln(String str, int startIndex, int length)
    Appends part of a string followed by a new line to this string builder. Appending null will call appendNull.

    Parameters: str the string to append startIndex the start index, inclusive, must be valid length the length to append, must be valid

    Returns: this, to enable chaining

    Since: 2.3

    appendln

    public StrBuilder appendln(StringBuffer str)
    Appends a string buffer followed by a new line to this string builder. Appending null will call appendNull.

    Parameters: str the string buffer to append

    Returns: this, to enable chaining

    Since: 2.3

    appendln

    public StrBuilder appendln(StringBuffer str, int startIndex, int length)
    Appends part of a string buffer followed by a new line to this string builder. Appending null will call appendNull.

    Parameters: str the string to append startIndex the start index, inclusive, must be valid length the length to append, must be valid

    Returns: this, to enable chaining

    Since: 2.3

    appendln

    public StrBuilder appendln(StrBuilder str)
    Appends another string builder followed by a new line to this string builder. Appending null will call appendNull.

    Parameters: str the string builder to append

    Returns: this, to enable chaining

    Since: 2.3

    appendln

    public StrBuilder appendln(StrBuilder str, int startIndex, int length)
    Appends part of a string builder followed by a new line to this string builder. Appending null will call appendNull.

    Parameters: str the string to append startIndex the start index, inclusive, must be valid length the length to append, must be valid

    Returns: this, to enable chaining

    Since: 2.3

    appendln

    public StrBuilder appendln(char[] chars)
    Appends a char array followed by a new line to the string builder. Appending null will call appendNull.

    Parameters: chars the char array to append

    Returns: this, to enable chaining

    Since: 2.3

    appendln

    public StrBuilder appendln(char[] chars, int startIndex, int length)
    Appends a char array followed by a new line to the string builder. Appending null will call appendNull.

    Parameters: chars the char array to append startIndex the start index, inclusive, must be valid length the length to append, must be valid

    Returns: this, to enable chaining

    Since: 2.3

    appendln

    public StrBuilder appendln(boolean value)
    Appends a boolean value followed by a new line to the string builder.

    Parameters: value the value to append

    Returns: this, to enable chaining

    Since: 2.3

    appendln

    public StrBuilder appendln(char ch)
    Appends a char value followed by a new line to the string builder.

    Parameters: ch the value to append

    Returns: this, to enable chaining

    Since: 2.3

    appendln

    public StrBuilder appendln(int value)
    Appends an int value followed by a new line to the string builder using String.valueOf.

    Parameters: value the value to append

    Returns: this, to enable chaining

    Since: 2.3

    appendln

    public StrBuilder appendln(long value)
    Appends a long value followed by a new line to the string builder using String.valueOf.

    Parameters: value the value to append

    Returns: this, to enable chaining

    Since: 2.3

    appendln

    public StrBuilder appendln(float value)
    Appends a float value followed by a new line to the string builder using String.valueOf.

    Parameters: value the value to append

    Returns: this, to enable chaining

    Since: 2.3

    appendln

    public StrBuilder appendln(double value)
    Appends a double value followed by a new line to the string builder using String.valueOf.

    Parameters: value the value to append

    Returns: this, to enable chaining

    Since: 2.3

    appendNewLine

    public StrBuilder appendNewLine()
    Appends the new line string to this string builder.

    The new line string can be altered using setNewLineText. This might be used to force the output to always use Unix line endings even when on Windows.

    Returns: this, to enable chaining

    appendNull

    public StrBuilder appendNull()
    Appends the text representing null to this string builder.

    Returns: this, to enable chaining

    appendPadding

    public StrBuilder appendPadding(int length, char padChar)
    Appends the pad character to the builder the specified number of times.

    Parameters: length the length to append, negative means no append padChar the character to append

    Returns: this, to enable chaining

    appendSeparator

    public StrBuilder appendSeparator(String separator)
    Appends a separator if the builder is currently non-empty. Appending a null separator will have no effect. The separator is appended using append.

    This method is useful for adding a separator each time around the loop except the first.

     for (Iterator it = list.iterator(); it.hasNext(); ) {
       appendSeparator(",");
       append(it.next());
     }
     
    Note that for this simple example, you should use StrBuilder.

    Parameters: separator the separator to use, null means no separator

    Returns: this, to enable chaining

    Since: 2.3

    appendSeparator

    public StrBuilder appendSeparator(char separator)
    Appends a separator if the builder is currently non-empty. The separator is appended using StrBuilder.

    This method is useful for adding a separator each time around the loop except the first.

     for (Iterator it = list.iterator(); it.hasNext(); ) {
       appendSeparator(',');
       append(it.next());
     }
     
    Note that for this simple example, you should use StrBuilder.

    Parameters: separator the separator to use

    Returns: this, to enable chaining

    Since: 2.3

    appendSeparator

    public StrBuilder appendSeparator(String separator, int loopIndex)
    Appends a separator to the builder if the loop index is greater than zero. Appending a null separator will have no effect. The separator is appended using append.

    This method is useful for adding a separator each time around the loop except the first.

     for (int i = 0; i < list.size(); i++) {
       appendSeparator(",", i);
       append(list.get(i));
     }
     
    Note that for this simple example, you should use StrBuilder.

    Parameters: separator the separator to use, null means no separator loopIndex the loop index

    Returns: this, to enable chaining

    Since: 2.3

    appendSeparator

    public StrBuilder appendSeparator(char separator, int loopIndex)
    Appends a separator to the builder if the loop index is greater than zero. The separator is appended using StrBuilder.

    This method is useful for adding a separator each time around the loop except the first.

     for (int i = 0; i < list.size(); i++) {
       appendSeparator(",", i);
       append(list.get(i));
     }
     
    Note that for this simple example, you should use StrBuilder.

    Parameters: separator the separator to use loopIndex the loop index

    Returns: this, to enable chaining

    Since: 2.3

    appendWithSeparators

    public StrBuilder appendWithSeparators(Object[] array, String separator)
    Appends an array placing separators between each value, but not before the first or after the last. Appending a null array will have no effect. Each object is appended using append.

    Parameters: array the array to append separator the separator to use, null means no separator

    Returns: this, to enable chaining

    appendWithSeparators

    public StrBuilder appendWithSeparators(Collection coll, String separator)
    Appends a collection placing separators between each value, but not before the first or after the last. Appending a null collection will have no effect. Each object is appended using append.

    Parameters: coll the collection to append separator the separator to use, null means no separator

    Returns: this, to enable chaining

    appendWithSeparators

    public StrBuilder appendWithSeparators(Iterator it, String separator)
    Appends an iterator placing separators between each value, but not before the first or after the last. Appending a null iterator will have no effect. Each object is appended using append.

    Parameters: it the iterator to append separator the separator to use, null means no separator

    Returns: this, to enable chaining

    asReader

    public Reader asReader()
    Gets the contents of this builder as a Reader.

    This method allows the contents of the builder to be read using any standard method that expects a Reader.

    To use, simply create a StrBuilder, populate it with data, call asReader, and then read away.

    The internal character array is shared between the builder and the reader. This allows you to append to the builder after creating the reader, and the changes will be picked up. Note however, that no synchronization occurs, so you must perform all operations with the builder and the reader in one thread.

    The returned reader supports marking, and ignores the flush method.

    Returns: a reader that reads from this builder

    asTokenizer

    public StrTokenizer asTokenizer()
    Creates a tokenizer that can tokenize the contents of this builder.

    This method allows the contents of this builder to be tokenized. The tokenizer will be setup by default to tokenize on space, tab, newline and formfeed (as per StringTokenizer). These values can be changed on the tokenizer class, before retrieving the tokens.

    The returned tokenizer is linked to this builder. You may intermix calls to the buider and tokenizer within certain limits, however there is no synchronization. Once the tokenizer has been used once, it must be reset to pickup the latest changes in the builder. For example:

     StrBuilder b = new StrBuilder();
     b.append("a b ");
     StrTokenizer t = b.asTokenizer();
     String[] tokens1 = t.getTokenArray();  // returns a,b
     b.append("c d ");
     String[] tokens2 = t.getTokenArray();  // returns a,b (c and d ignored)
     t.reset();              // reset causes builder changes to be picked up
     String[] tokens3 = t.getTokenArray();  // returns a,b,c,d
     
    In addition to simply intermixing appends and tokenization, you can also call the set methods on the tokenizer to alter how it tokenizes. Just remember to call reset when you want to pickup builder changes.

    Calling reset or (char[]) with a non-null value will break the link with the builder.

    Returns: a tokenizer that is linked to this builder

    asWriter

    public Writer asWriter()
    Gets this builder as a Writer that can be written to.

    This method allows you to populate the contents of the builder using any standard method that takes a Writer.

    To use, simply create a StrBuilder, call asWriter, and populate away. The data is available at any time using the methods of the StrBuilder.

    The internal character array is shared between the builder and the writer. This allows you to intermix calls that append to the builder and write using the writer and the changes will be occur correctly. Note however, that no synchronization occurs, so you must perform all operations with the builder and the writer in one thread.

    The returned writer ignores the close and flush methods.

    Returns: a writer that populates this builder

    capacity

    public int capacity()
    Gets the current size of the internal character array buffer.

    Returns: the capacity

    charAt

    public char charAt(int index)
    Gets the character at the specified index.

    Parameters: index the index to retrieve, must be valid

    Returns: the character at the index

    Throws: IndexOutOfBoundsException if the index is invalid

    See Also: StrBuilder StrBuilder

    clear

    public StrBuilder clear()
    Clears the string builder (convenience Collections API style method).

    This method does not reduce the size of the internal character buffer. To do that, call clear() followed by minimizeCapacity.

    This method is the same as StrBuilder called with zero and is provided to match the API of Collections.

    Returns: this, to enable chaining

    contains

    public boolean contains(char ch)
    Checks if the string builder contains the specified char.

    Parameters: ch the character to find

    Returns: true if the builder contains the character

    contains

    public boolean contains(String str)
    Checks if the string builder contains the specified string.

    Parameters: str the string to find

    Returns: true if the builder contains the string

    contains

    public boolean contains(StrMatcher matcher)
    Checks if the string builder contains a string matched using the specified matcher.

    Matchers can be used to perform advanced searching behaviour. For example you could write a matcher to search for the character 'a' followed by a number.

    Parameters: matcher the matcher to use, null returns -1

    Returns: true if the matcher finds a match in the builder

    delete

    public StrBuilder delete(int startIndex, int endIndex)
    Deletes the characters between the two specified indices.

    Parameters: startIndex the start index, inclusive, must be valid endIndex the end index, exclusive, must be valid except that if too large it is treated as end of string

    Returns: this, to enable chaining

    Throws: IndexOutOfBoundsException if the index is invalid

    deleteAll

    public StrBuilder deleteAll(char ch)
    Deletes the character wherever it occurs in the builder.

    Parameters: ch the character to delete

    Returns: this, to enable chaining

    deleteAll

    public StrBuilder deleteAll(String str)
    Deletes the string wherever it occurs in the builder.

    Parameters: str the string to delete, null causes no action

    Returns: this, to enable chaining

    deleteAll

    public StrBuilder deleteAll(StrMatcher matcher)
    Deletes all parts of the builder that the matcher matches.

    Matchers can be used to perform advanced deletion behaviour. For example you could write a matcher to delete all occurances where the character 'a' is followed by a number.

    Parameters: matcher the matcher to use to find the deletion, null causes no action

    Returns: this, to enable chaining

    deleteCharAt

    public StrBuilder deleteCharAt(int index)
    Deletes the character at the specified index.

    Parameters: index the index to delete

    Returns: this, to enable chaining

    Throws: IndexOutOfBoundsException if the index is invalid

    See Also: StrBuilder StrBuilder

    deleteFirst

    public StrBuilder deleteFirst(char ch)
    Deletes the character wherever it occurs in the builder.

    Parameters: ch the character to delete

    Returns: this, to enable chaining

    deleteFirst

    public StrBuilder deleteFirst(String str)
    Deletes the string wherever it occurs in the builder.

    Parameters: str the string to delete, null causes no action

    Returns: this, to enable chaining

    deleteFirst

    public StrBuilder deleteFirst(StrMatcher matcher)
    Deletes the first match within the builder using the specified matcher.

    Matchers can be used to perform advanced deletion behaviour. For example you could write a matcher to delete where the character 'a' is followed by a number.

    Parameters: matcher the matcher to use to find the deletion, null causes no action

    Returns: this, to enable chaining

    endsWith

    public boolean endsWith(String str)
    Checks whether this builder ends with the specified string.

    Note that this method handles null input quietly, unlike String.

    Parameters: str the string to search for, null returns false

    Returns: true if the builder ends with the string

    ensureCapacity

    public StrBuilder ensureCapacity(int capacity)
    Checks the capacity and ensures that it is at least the size specified.

    Parameters: capacity the capacity to ensure

    Returns: this, to enable chaining

    equals

    public boolean equals(StrBuilder other)
    Checks the contents of this builder against another to see if they contain the same character content.

    Parameters: other the object to check, null returns false

    Returns: true if the builders contain the same characters in the same order

    equals

    public boolean equals(Object obj)
    Checks the contents of this builder against another to see if they contain the same character content.

    Parameters: obj the object to check, null returns false

    Returns: true if the builders contain the same characters in the same order

    equalsIgnoreCase

    public boolean equalsIgnoreCase(StrBuilder other)
    Checks the contents of this builder against another to see if they contain the same character content ignoring case.

    Parameters: other the object to check, null returns false

    Returns: true if the builders contain the same characters in the same order

    getChars

    public char[] getChars(char[] destination)
    Copies the character array into the specified array.

    Parameters: destination the destination array, null will cause an array to be created

    Returns: the input array, unless that was null or too small

    getChars

    public void getChars(int startIndex, int endIndex, char[] destination, int destinationIndex)
    Copies the character array into the specified array.

    Parameters: startIndex first index to copy, inclusive, must be valid endIndex last index, exclusive, must be valid destination the destination array, must not be null or too small destinationIndex the index to start copying in destination

    Throws: NullPointerException if the array is null IndexOutOfBoundsException if any index is invalid

    getNewLineText

    public String getNewLineText()
    Gets the text to be appended when a new line is added.

    Returns: the new line text, null means use system default

    getNullText

    public String getNullText()
    Gets the text to be appended when null is added.

    Returns: the null text, null means no append

    hashCode

    public int hashCode()
    Gets a suitable hash code for this builder.

    Returns: a hash code

    indexOf

    public int indexOf(char ch)
    Searches the string builder to find the first reference to the specified char.

    Parameters: ch the character to find

    Returns: the first index of the character, or -1 if not found

    indexOf

    public int indexOf(char ch, int startIndex)
    Searches the string builder to find the first reference to the specified char.

    Parameters: ch the character to find startIndex the index to start at, invalid index rounded to edge

    Returns: the first index of the character, or -1 if not found

    indexOf

    public int indexOf(String str)
    Searches the string builder to find the first reference to the specified string.

    Note that a null input string will return -1, whereas the JDK throws an exception.

    Parameters: str the string to find, null returns -1

    Returns: the first index of the string, or -1 if not found

    indexOf

    public int indexOf(String str, int startIndex)
    Searches the string builder to find the first reference to the specified string starting searching from the given index.

    Note that a null input string will return -1, whereas the JDK throws an exception.

    Parameters: str the string to find, null returns -1 startIndex the index to start at, invalid index rounded to edge

    Returns: the first index of the string, or -1 if not found

    indexOf

    public int indexOf(StrMatcher matcher)
    Searches the string builder using the matcher to find the first match.

    Matchers can be used to perform advanced searching behaviour. For example you could write a matcher to find the character 'a' followed by a number.

    Parameters: matcher the matcher to use, null returns -1

    Returns: the first index matched, or -1 if not found

    indexOf

    public int indexOf(StrMatcher matcher, int startIndex)
    Searches the string builder using the matcher to find the first match searching from the given index.

    Matchers can be used to perform advanced searching behaviour. For example you could write a matcher to find the character 'a' followed by a number.

    Parameters: matcher the matcher to use, null returns -1 startIndex the index to start at, invalid index rounded to edge

    Returns: the first index matched, or -1 if not found

    insert

    public StrBuilder insert(int index, Object obj)
    Inserts the string representation of an object into this builder. Inserting null will use the stored null text value.

    Parameters: index the index to add at, must be valid obj the object to insert

    Returns: this, to enable chaining

    Throws: IndexOutOfBoundsException if the index is invalid

    insert

    public StrBuilder insert(int index, String str)
    Inserts the string into this builder. Inserting null will use the stored null text value.

    Parameters: index the index to add at, must be valid str the string to insert

    Returns: this, to enable chaining

    Throws: IndexOutOfBoundsException if the index is invalid

    insert

    public StrBuilder insert(int index, char[] chars)
    Inserts the character array into this builder. Inserting null will use the stored null text value.

    Parameters: index the index to add at, must be valid chars the char array to insert

    Returns: this, to enable chaining

    Throws: IndexOutOfBoundsException if the index is invalid

    insert

    public StrBuilder insert(int index, char[] chars, int offset, int length)
    Inserts part of the character array into this builder. Inserting null will use the stored null text value.

    Parameters: index the index to add at, must be valid chars the char array to insert offset the offset into the character array to start at, must be valid length the length of the character array part to copy, must be positive

    Returns: this, to enable chaining

    Throws: IndexOutOfBoundsException if any index is invalid

    insert

    public StrBuilder insert(int index, boolean value)
    Inserts the value into this builder.

    Parameters: index the index to add at, must be valid value the value to insert

    Returns: this, to enable chaining

    Throws: IndexOutOfBoundsException if the index is invalid

    insert

    public StrBuilder insert(int index, char value)
    Inserts the value into this builder.

    Parameters: index the index to add at, must be valid value the value to insert

    Returns: this, to enable chaining

    Throws: IndexOutOfBoundsException if the index is invalid

    insert

    public StrBuilder insert(int index, int value)
    Inserts the value into this builder.

    Parameters: index the index to add at, must be valid value the value to insert

    Returns: this, to enable chaining

    Throws: IndexOutOfBoundsException if the index is invalid

    insert

    public StrBuilder insert(int index, long value)
    Inserts the value into this builder.

    Parameters: index the index to add at, must be valid value the value to insert

    Returns: this, to enable chaining

    Throws: IndexOutOfBoundsException if the index is invalid

    insert

    public StrBuilder insert(int index, float value)
    Inserts the value into this builder.

    Parameters: index the index to add at, must be valid value the value to insert

    Returns: this, to enable chaining

    Throws: IndexOutOfBoundsException if the index is invalid

    insert

    public StrBuilder insert(int index, double value)
    Inserts the value into this builder.

    Parameters: index the index to add at, must be valid value the value to insert

    Returns: this, to enable chaining

    Throws: IndexOutOfBoundsException if the index is invalid

    isEmpty

    public boolean isEmpty()
    Checks is the string builder is empty (convenience Collections API style method).

    This method is the same as checking length and is provided to match the API of Collections.

    Returns: true if the size is 0.

    lastIndexOf

    public int lastIndexOf(char ch)
    Searches the string builder to find the last reference to the specified char.

    Parameters: ch the character to find

    Returns: the last index of the character, or -1 if not found

    lastIndexOf

    public int lastIndexOf(char ch, int startIndex)
    Searches the string builder to find the last reference to the specified char.

    Parameters: ch the character to find startIndex the index to start at, invalid index rounded to edge

    Returns: the last index of the character, or -1 if not found

    lastIndexOf

    public int lastIndexOf(String str)
    Searches the string builder to find the last reference to the specified string.

    Note that a null input string will return -1, whereas the JDK throws an exception.

    Parameters: str the string to find, null returns -1

    Returns: the last index of the string, or -1 if not found

    lastIndexOf

    public int lastIndexOf(String str, int startIndex)
    Searches the string builder to find the last reference to the specified string starting searching from the given index.

    Note that a null input string will return -1, whereas the JDK throws an exception.

    Parameters: str the string to find, null returns -1 startIndex the index to start at, invalid index rounded to edge

    Returns: the last index of the string, or -1 if not found

    lastIndexOf

    public int lastIndexOf(StrMatcher matcher)
    Searches the string builder using the matcher to find the last match.

    Matchers can be used to perform advanced searching behaviour. For example you could write a matcher to find the character 'a' followed by a number.

    Parameters: matcher the matcher to use, null returns -1

    Returns: the last index matched, or -1 if not found

    lastIndexOf

    public int lastIndexOf(StrMatcher matcher, int startIndex)
    Searches the string builder using the matcher to find the last match searching from the given index.

    Matchers can be used to perform advanced searching behaviour. For example you could write a matcher to find the character 'a' followed by a number.

    Parameters: matcher the matcher to use, null returns -1 startIndex the index to start at, invalid index rounded to edge

    Returns: the last index matched, or -1 if not found

    leftString

    public String leftString(int length)
    Extracts the leftmost characters from the string builder without throwing an exception.

    This method extracts the left length characters from the builder. If this many characters are not available, the whole builder is returned. Thus the returned string may be shorter than the length requested.

    Parameters: length the number of characters to extract, negative returns empty string

    Returns: the new string

    length

    public int length()
    Gets the length of the string builder.

    Returns: the length

    midString

    public String midString(int index, int length)
    Extracts some characters from the middle of the string builder without throwing an exception.

    This method extracts length characters from the builder at the specified index. If the index is negative it is treated as zero. If the index is greater than the builder size, it is treated as the builder size. If the length is negative, the empty string is returned. If insufficient characters are available in the builder, as much as possible is returned. Thus the returned string may be shorter than the length requested.

    Parameters: index the index to start at, negative means zero length the number of characters to extract, negative returns empty string

    Returns: the new string

    minimizeCapacity

    public StrBuilder minimizeCapacity()
    Minimizes the capacity to the actual length of the string.

    Returns: this, to enable chaining

    replace

    public StrBuilder replace(int startIndex, int endIndex, String replaceStr)
    Replaces a portion of the string builder with another string. The length of the inserted string does not have to match the removed length.

    Parameters: startIndex the start index, inclusive, must be valid endIndex the end index, exclusive, must be valid except that if too large it is treated as end of string replaceStr the string to replace with, null means delete range

    Returns: this, to enable chaining

    Throws: IndexOutOfBoundsException if the index is invalid

    replace

    public StrBuilder replace(StrMatcher matcher, String replaceStr, int startIndex, int endIndex, int replaceCount)
    Advanced search and replaces within the builder using a matcher.

    Matchers can be used to perform advanced behaviour. For example you could write a matcher to delete all occurances where the character 'a' is followed by a number.

    Parameters: matcher the matcher to use to find the deletion, null causes no action replaceStr the string to replace the match with, null is a delete startIndex the start index, inclusive, must be valid endIndex the end index, exclusive, must be valid except that if too large it is treated as end of string replaceCount the number of times to replace, -1 for replace all

    Returns: this, to enable chaining

    Throws: IndexOutOfBoundsException if start index is invalid

    replaceAll

    public StrBuilder replaceAll(char search, char replace)
    Replaces the search character with the replace character throughout the builder.

    Parameters: search the search character replace the replace character

    Returns: this, to enable chaining

    replaceAll

    public StrBuilder replaceAll(String searchStr, String replaceStr)
    Replaces the search string with the replace string throughout the builder.

    Parameters: searchStr the search string, null causes no action to occur replaceStr the replace string, null is equivalent to an empty string

    Returns: this, to enable chaining

    replaceAll

    public StrBuilder replaceAll(StrMatcher matcher, String replaceStr)
    Replaces all matches within the builder with the replace string.

    Matchers can be used to perform advanced replace behaviour. For example you could write a matcher to replace all occurances where the character 'a' is followed by a number.

    Parameters: matcher the matcher to use to find the deletion, null causes no action replaceStr the replace string, null is equivalent to an empty string

    Returns: this, to enable chaining

    replaceFirst

    public StrBuilder replaceFirst(char search, char replace)
    Replaces the first instance of the search character with the replace character in the builder.

    Parameters: search the search character replace the replace character

    Returns: this, to enable chaining

    replaceFirst

    public StrBuilder replaceFirst(String searchStr, String replaceStr)
    Replaces the first instance of the search string with the replace string.

    Parameters: searchStr the search string, null causes no action to occur replaceStr the replace string, null is equivalent to an empty string

    Returns: this, to enable chaining

    replaceFirst

    public StrBuilder replaceFirst(StrMatcher matcher, String replaceStr)
    Replaces the first match within the builder with the replace string.

    Matchers can be used to perform advanced replace behaviour. For example you could write a matcher to replace where the character 'a' is followed by a number.

    Parameters: matcher the matcher to use to find the deletion, null causes no action replaceStr the replace string, null is equivalent to an empty string

    Returns: this, to enable chaining

    reverse

    public StrBuilder reverse()
    Reverses the string builder placing each character in the opposite index.

    Returns: this, to enable chaining

    rightString

    public String rightString(int length)
    Extracts the rightmost characters from the string builder without throwing an exception.

    This method extracts the right length characters from the builder. If this many characters are not available, the whole builder is returned. Thus the returned string may be shorter than the length requested.

    Parameters: length the number of characters to extract, negative returns empty string

    Returns: the new string

    setCharAt

    public StrBuilder setCharAt(int index, char ch)
    Sets the character at the specified index.

    Parameters: index the index to set ch the new character

    Returns: this, to enable chaining

    Throws: IndexOutOfBoundsException if the index is invalid

    See Also: StrBuilder StrBuilder

    setLength

    public StrBuilder setLength(int length)
    Updates the length of the builder by either dropping the last characters or adding filler of unicode zero.

    Parameters: length the length to set to, must be zero or positive

    Returns: this, to enable chaining

    Throws: IndexOutOfBoundsException if the length is negative

    setNewLineText

    public StrBuilder setNewLineText(String newLine)
    Sets the text to be appended when a new line is added.

    Parameters: newLine the new line text, null means use system default

    Returns: this, to enable chaining

    setNullText

    public StrBuilder setNullText(String nullText)
    Sets the text to be appended when null is added.

    Parameters: nullText the null text, null means no append

    Returns: this, to enable chaining

    size

    public int size()
    Gets the length of the string builder.

    This method is the same as length and is provided to match the API of Collections.

    Returns: the length

    startsWith

    public boolean startsWith(String str)
    Checks whether this builder starts with the specified string.

    Note that this method handles null input quietly, unlike String.

    Parameters: str the string to search for, null returns false

    Returns: true if the builder starts with the string

    substring

    public String substring(int start)
    Extracts a portion of this string builder as a string.

    Parameters: start the start index, inclusive, must be valid

    Returns: the new string

    Throws: IndexOutOfBoundsException if the index is invalid

    substring

    public String substring(int startIndex, int endIndex)
    Extracts a portion of this string builder as a string.

    Note: This method treats an endIndex greater than the length of the builder as equal to the length of the builder, and continues without error, unlike StringBuffer or String.

    Parameters: startIndex the start index, inclusive, must be valid endIndex the end index, exclusive, must be valid except that if too large it is treated as end of string

    Returns: the new string

    Throws: IndexOutOfBoundsException if the index is invalid

    toCharArray

    public char[] toCharArray()
    Copies the builder's character array into a new character array.

    Returns: a new array that represents the contents of the builder

    toCharArray

    public char[] toCharArray(int startIndex, int endIndex)
    Copies part of the builder's character array into a new character array.

    Parameters: startIndex the start index, inclusive, must be valid endIndex the end index, exclusive, must be valid except that if too large it is treated as end of string

    Returns: a new array that holds part of the contents of the builder

    Throws: IndexOutOfBoundsException if startIndex is invalid, or if endIndex is invalid (but endIndex greater than size is valid)

    toString

    public String toString()
    Gets a String version of the string builder, creating a new instance each time the method is called.

    Note that unlike StringBuffer, the string version returned is independent of the string builder.

    Returns: the builder as a String

    toStringBuffer

    public StringBuffer toStringBuffer()
    Gets a StringBuffer version of the string builder, creating a new instance each time the method is called.

    Returns: the builder as a StringBuffer

    trim

    public StrBuilder trim()
    Trims the builder by removing characters less than or equal to a space from the beginning and end.

    Returns: this, to enable chaining

    validateIndex

    protected void validateIndex(int index)
    Validates parameters defining a single index in the builder.

    Parameters: index the index, must be valid

    Throws: IndexOutOfBoundsException if the index is invalid

    validateRange

    protected int validateRange(int startIndex, int endIndex)
    Validates parameters defining a range of the builder.

    Parameters: startIndex the start index, inclusive, must be valid endIndex the end index, exclusive, must be valid except that if too large it is treated as end of string

    Returns: the new string

    Throws: IndexOutOfBoundsException if the index is invalid

    Copyright © 2001-2010 - Apache Software Foundation