package squill.util;
/**
* String helper methods.
*/
public class StringUtil {
/**
* Converts the first letter of a String into upper case.
*
* @param in input String.
* @return String with first letter in upper case.
*/
public static String capitalize(String in) {
return in.substring(0, 1).toUpperCase() + in.substring(1);
}
/**
* Converts the first letter of a String into lower case.
*
* @param in input String.
* @return String with first letter in lower case.
*/
public static String decapitalize(String in) {
return in.substring(0, 1).toLowerCase() + in.substring(1);
}
/**
* Converts a String into came case.
* The first letter will be in upper case.
* <p>
* Underscore will be removed and each word will
* start with an upper case letter.
* </p>
* <p/>
* For example:
* <pre>
* toUpperCamelCase("first_name") = "FirstName"
* toUpperCamelCase("First_name") = "FirstName"
* </pre>
*
* @param in input String.
* @return String in camel case.
*/
public static String toUpperCamelCase(String in) {
return toCamelCase(in, true);
}
/**
* Converts a String into came case.
* The first letter will be in lower case.
* <p>
* Underscore will be removed and each word will
* start with an upper case letter.
* </p>
* <p/>
* For example:
* <pre>
* toLowerCamelCase("first_name") = "firstName"
* toLowerCamelCase("First_name") = "firstName"
* </pre>
*
* @param in input String.
* @return String in camel case.
*/
public static String toLowerCamelCase(String in) {
return toCamelCase(in, false);
}
/**
* Converts a String into camel case.
* <p>
* Underscore will be removed and each word will
* start with an upper case letter.
* </p>
* <p>
* The first letter of the String will be capitalized
* if the <code>upperCC</code> is true.
* </p>
* <p/>
* For example:
* <pre>
* toCamelCase("first_name", false) = "firstName"
* toCamelCase("first_name", true) = "FirstName"
* </pre>
*
* @param in input String.
* @param upperCC whether to capitalize the first letter of the String.
* @return String in camel case.
*/
private static String toCamelCase(String in, boolean upperCC) {
StringBuilder camelCased = new StringBuilder(in.length());
boolean up = upperCC;
for (int i = 0; i < in.length(); i++) {
char ch = in.charAt(i);
if (ch == '_') {
up = true;
continue;
}
if (up) {
ch = Character.toUpperCase(ch);
} else {
ch = Character.toLowerCase(ch);
}
camelCased.append(ch);
up = false;
}
return camelCased.toString();
}
/**
* Converts a CamelCase string into upper case string with underscores.
* <p>
* Underscore will be removed and words will
* be separated with underscores ("_")
* </p>
* <p/>
* For example:
* <pre>
* camelCase2Underscores("firstName") = "FIRST_NAME"
* camelCase2Underscores("FirstName") = "FIRST_NAME"
* </pre>
*
* @param in input String.
* @return Uppercased String with underscores separating words.
*/
public static String camelCase2Underscores(String in) {
StringBuilder underscored = new StringBuilder(in.length()+5);
for (int i = 0; i < in.length(); i++) {
char ch = in.charAt(i);
if (Character.isUpperCase(ch)) {
underscored.append("_");
}
underscored.append(ch);
}
return underscored.toString().toUpperCase();
}
public static String join(Iterable<?> values, String delim) {
return join(values, ToString.NOOP, delim);
}
public static String join(Iterable<?> values, ToString toString, String delim) {
if (values == null) return "";
StringBuilder sb = new StringBuilder();
for (Object value : values) {
sb.append(delim).append(toString == null ? value : toString.toString(value));
}
return (sb.length()<delim.length()) ? "" : sb.substring(delim.length());
}
}