Data Type Java

//package com.studiofortress.sf.util;
/**
 * A fully static class, this contains helper methods for working with strings.
 *
 * @author Joseph Lenton
 */
public final class StringUtil
{
    private static final char DEFAULT_TRIM_WHITESPACE = ' ';
    /**
     * No Constructor.
     */
    private StringUtil() { }
    /**
     * Concatonates all the strings given together into one long string.
     * @param strings An array of strings, cannot be null and cannot contain null.
     * @return A string made by concatonating all the elements of strings together.
     */
    public static String stringConcat(String ... strings)
    {
        /* Add up the total length of the strings, this is a small optimization
         * for when were working with lots of long strings. */
        int length = 0;
        for (int i = 0; i < strings.length; i++) {
            length += strings[i].length();
        }
        // append all strings together
        final StringBuilder concatString = new StringBuilder(length);
        for (int i = 0; i < strings.length; i++) {
            concatString.append(strings[i]);
        }
        
        return concatString.toString();
    }
    /**
     * Trims spaces from the left side of the string and returns the result.
     * @param string The string to trim.
     * @return A string with all spaces removed from the left side.
     */
    public static String trimLeft(String string)
    {
        return trimLeft( string, DEFAULT_TRIM_WHITESPACE );
    }
    /**
     * Trims the character given from the given string and returns the result.
     * @param string The string to trim, cannot be null.
     * @param trimChar The character to trim from the left of the given string.
     * @return A string with the given character trimmed from the string given.
     */
    public static String trimLeft(final String string, final char trimChar)
    {
        final int stringLength = string.length();
        int i;
        
        for (i = 0; i < stringLength && string.charAt(i) == trimChar; i++) {
            /* increment i until it is at the location of the first char that
             * does not match the trimChar given. */
        }
        if (i == 0) {
            return string;
        } else {
            return string.substring(i);
        }
    }
    /**
     * Trims spaces from the right side of the string given and returns the
     * result.
     * @param string The string to trim, cannot be null.
     * @return A string with all whitespace trimmed from the right side of it.
     */
    public static String trimRight(final String string)
    {
        return trimRight(string, DEFAULT_TRIM_WHITESPACE);
    }
    /**
     * Trims the character given from the right side of the string given. The
     * result of this trimming is then returned.
     * @param string The string to trim, cannot be null.
     * @param trimChar The character to trim from the right side of the given string.
     * @return The result of trimming the character given from the right side of the given string.
     */
    public static String trimRight(final String string, final char trimChar)
    {
        final int lastChar = string.length() - 1;
        int i;
        for (i = lastChar; i >= 0 && string.charAt(i) == trimChar; i--) {
            /* Decrement i until it is equal to the first char that does not
             * match the trimChar given. */
        }
        
        if (i < lastChar) {
            // the +1 is so we include the char at i
            return string.substring(0, i+1);
        } else {
            return string;
        }
    }
    /**
     * Trims the character given from both left and right of the string given.
     * For trimming whitespace you can simply use the String classes trim method.
     * @param string The string to trim characters from, cannot be null.
     * @param trimChar The character to trim from either side of the given string.
     * @return A string with the given characters trimmed from either side.
     */
    public static String trim(final String string, final char trimChar)
    {
        return trimLeft(trimRight(string, trimChar), trimChar);
    }
}