All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.darwinsys.lang.StringUtil Maven / Gradle / Ivy

package com.darwinsys.lang;

/** 
 * Miscellaneous string utilities:
 */
public class StringUtil {

	/** Like String instance method of same name, but null-safe.
	 * @param s The input string
	 * @return True if input either is null, or is empty as per String isEmpty().
	 */
	public static boolean isEmpty(String s) {
		return s == null || s.isEmpty();
	}

	/** Format an array of Object as a list with commas,
	 * like "apples, oranges, and bananas");
	 * XXX Should have a boolean for the final comma :-)
	 * @param array The objects to be stringified
	 * @return a pretty list
	 */
	public static String arrayToCommaList(Object[] array) {
		StringBuffer sb = new StringBuffer();
		for (int i=0; i 0 && i < array.length - 1) {
				sb.append(',');
			}
			if (i > 0) {
				sb.append(' ');
			}
			if (i==(array.length-1)) {
				sb.append("and ");
			}
			sb.append(array[i]);
		}
		return sb.toString();
	}

	/** Reverse a String character by character, 'not now' returns 'won ton'
	 * @param str The string to reverse
	 * @return The reversed string
	 */
	public static String reverse(String str) {
		return new StringBuffer(str).reverse().toString();
	}
	
	/** 
	 * Replace all occurrences of one string with another (not RE-based).
	 * @param oldStr The string to be replaced
	 * @param newStr The string to replace it with
	 * @param input The string in which do do the replacement
	 * @return The string with replacements done
	 */
	public static String subst(String oldStr, String newStr, String input) {
		int where = 0;
		StringBuffer sb = new StringBuffer(input);
		while ((where = StringUtil.indexOf(sb, oldStr, where)) != -1) {
			sb.replace(where, where + oldStr.length(), newStr);
		}
		return sb.toString();
	}

	// For backwards compatability only, do not use in new code.
	public static int indexOf(StringBuffer sb, String str, int fromIndex) {
		return sb.indexOf(str, fromIndex);
	}
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy