package org.sglj.util; /** * Utility methods for the {@link StringBuilder} class. * * @author Leo Osvald * @version 0.1 */ public abstract class StringBuilderUtils { /** * Tests if this string starts with the specified prefix. * * @param prefix the prefix. * @return <code>true</code> if the character sequence represented by the * argument is a prefix of the character sequence represented by * this string; <code>false</code> otherwise. * Note also that <code>true</code> will be returned if the * argument is an empty string or is equal to this * <code>StringBuilder</code> object as determined by * comparing the corresponding string obtained by * calling the {@link StringBuilder#toString()} method. */ public static boolean startsWith(StringBuilder sb, String prefix) { return startsWith(sb, prefix, 0); } /** * Tests if the substring of the specified <tt>StringBuilder</tt> * beginning at the specified index starts with the specified prefix. * * @param sb * @param prefix the prefix. * @param offset where to begin looking in this string. * @return <code>true</code> if the character sequence represented by the * argument is a prefix of the substring of this object starting * at index <code>offset</code>; <code>false</code> otherwise. * The result is <code>false</code> if <code>toffset</code> is * negative or greater than the length of this * <code>StringBuilder</code> object; otherwise the result * is the same as the result of the expression * <pre> * sb.substring(offset).startsWith(prefix) * </pre> */ public static boolean startsWith(StringBuilder sb, String prefix, int offset) { if (offset < 0 || sb.length() - offset < prefix.length()) return false; int len = prefix.length(); for (int i = 0; i < len; ++i) { if (sb.charAt(offset + i) != prefix.charAt(i)) return false; } return true; } /** * Tests if this <tt>StringBuilder</tt> ends with the specified suffix. * * @param suffix the suffix. * @return <code>true</code> if the character sequence represented by the * argument is a suffix of the character sequence represented by * this object; <code>false</code> otherwise. Note that the * result will be <code>true</code> if the argument is the * empty string or is equal to the specified * <code>StringBuilder</code> object as determined by * comparing the corresponding string obtained by * calling the {@link StringBuilder#toString()} method. */ public static boolean endsWith(StringBuilder sb, String suffix) { return startsWith(sb, suffix, sb.length() - suffix.length()); } /** * Clears the specified <tt>StringBuilder</tt>. This method is equivalent * to the following: * <pre> * sb.remove(0, sb.length()); * </pre> * * @param sb the <tt>StringBuilder</tt> to be cleared */ public static void clear(StringBuilder sb) { sb.delete(0, sb.length()); } }