/** * Trim leading whitespace from the given String. * * @param str the string to check * @return the trimmed String * @see java.lang.Character#isWhitespace(char) */ public static String trimLeadingWhitespace(String str) { return trimLeadingCharacter(str, CharacterChecker.WHITESPACE); }
/** * Trim all occurences of the supplied leading character from the given String. * * @param str the string to check * @param leadingCharacter the leading character to be trimmed * @return the trimmed String */ public static String trimLeadingCharacter(String str, final char leadingCharacter) { return trimLeadingCharacter(str, new CharacterChecker() { public boolean isCharacterLegal(char character) { return character == leadingCharacter; } }); }
/** * Parse the given localeString into a {@link java.util.Locale}. * * This is the inverse operation of {@link java.util.Locale#toString Locale's toString}. * * @param localeString the locale string * @return a corresponding Locale instance */ public static Locale parseLocaleString(String localeString) { String[] parts = tokenizeToStringArray(localeString, "_ ", false, false); String language = (parts.length > 0 ? parts[0] : ""); String country = (parts.length > 1 ? parts[1] : ""); String variant = ""; if (parts.length >= 2) { // There is definitely a variant, and it is everything after the country // code sans the separator between the country code and the variant. int endIndexOfCountryCode = localeString.indexOf(country) + country.length(); // Strip off any leading '_' and whitespace, what's left is the variant. variant = trimLeadingWhitespace(localeString.substring(endIndexOfCountryCode)); if (variant.startsWith("_")) { variant = trimLeadingCharacter(variant, '_'); } } return (language.length() > 0 ? new Locale(language, country, variant) : null); } }