/** * Parse the given <code>localeString</code> value into a {@link java.util.Locale}. * <p>This is the inverse operation of {@link java.util.Locale#toString Locale's toString}. * @param localeString the locale string, following <code>Locale's</code> * <code>toString()</code> format ("en", "en_UK", etc); * also accepts spaces as separators, as an alternative to underscores * @return a corresponding <code>Locale</code> 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] : ""); validateLocalePart(language); validateLocalePart(country); 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); }
/** * Parse the given <code>localeString</code> value into a {@link java.util.Locale}. * <p>This is the inverse operation of {@link java.util.Locale#toString Locale's toString}. * @param localeString the locale string, following <code>Locale's</code> * <code>toString()</code> format ("en", "en_UK", etc); * also accepts spaces as separators, as an alternative to underscores * @return a corresponding <code>Locale</code> 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] : ""); validateLocalePart(language); validateLocalePart(country); 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); }
/** * Parse the given <code>localeString</code> value into a {@link java.util.Locale}. * <p>This is the inverse operation of {@link java.util.Locale#toString Locale's toString}. * @param localeString the locale string, following <code>Locale's</code> * <code>toString()</code> format ("en", "en_UK", etc); * also accepts spaces as separators, as an alternative to underscores * @return a corresponding <code>Locale</code> 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] : ""); validateLocalePart(language); validateLocalePart(country); 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); }