In Projekten müssen wir häufig Zeichenfolgen in Locales analysieren, es gibt jedoch keine einfach zu verwendende Klasse.
Java selbst bietet drei Konstruktoren, aber im tatsächlichen Gebrauch müssen Sie diese selbst analysieren, was relativ umständlich ist.
Gebietsschema (langugae)
Gebietsschema (Sprache, Land)
Gebietsschema (String-Sprache, String-Land, String-Variante)
Apache verfügt über LocaleUtils.toLocale(String-Sprache), unterstützt jedoch nicht die Kleinschreibung der letzten beiden Zeichen. Beispiel: zh_CN unterstützt es, zh_cn jedoch nicht.
In Bezug auf andere Methoden habe ich den folgenden Kurs geschrieben und mir Notizen gemacht. Ich hoffe, dass er für Menschen hilfreich sein wird, die ähnliche Probleme lösen.
Kopieren Sie den Codecode wie folgt:
import java.util.Locale;
öffentliche Klasse LocaleUtil
{
private final static Locale DEFAULT_LOCALE = Locale.ENGLISH;
öffentlicher finaler statischer String IETF_SEPARATOR = „-“;
public final static String SEPARATOR = "_";
öffentlicher finaler statischer String EMPTY_STRING = "";
öffentliches statisches Gebietsschema toLocale (String-Sprache)
{
if( !StringUtil.isNullOrEmpty( Sprache ) )
{
return langToLocale( language, SEPARATOR );
}
return DEFAULT_LOCALE;
}
öffentliches statisches Gebietsschema langToLocale( String lang , String-Trennzeichen )
{
if( StringUtil.isNullOrEmpty( lang ) )
{
return DEFAULT_LOCALE;
}
String-Sprache = EMPTY_STRING;
String land = EMPTY_STRING;
String-Variante = EMPTY_STRING;
int i1 = lang.indexOf(separator);
wenn (i1 < 0)
{
Sprache = lang;
} anders
{
language = lang.substring(0, i1);
++i1;
int i2 = lang.indexOf( Separator, i1);
wenn (i2 < 0)
{
Land = lang.substring(i1);
} anders
{
Land = lang.substring(i1, i2);
Variante = lang.substring(i2+1);
}
}
if(Sprache.Länge() == 2)
{
language = language.toLowerCase();
}anders
{
Sprache = EMPTY_STRING;
}
if(country.length() == 2)
{
Land = Land.toUpperCase();
}anders
{
Land = EMPTY_STRING;
}
if( (variant.length() > 0) &&
((Sprache.Länge() == 2) ||(Land.Länge() == 2)) )
{
Variante = Variante.toUpperCase();
}anders
{
Variante = EMPTY_STRING;
}
neues Gebietsschema (Sprache, Land, Variante) zurückgeben;
}
}
Beachten:
Kopieren Sie den Codecode wie folgt:
öffentliche Klasse StringUtil
{
öffentlicher statischer boolescher Wert isNullOrEmpty(String target) {
return target == null || "".equals(target);
}
}