Dans les projets, nous devons souvent analyser des chaînes dans des paramètres régionaux, mais il n'existe pas de classe facile à utiliser.
Java lui-même fournit 3 constructeurs, mais en utilisation réelle, vous devez les analyser vous-même, ce qui est relativement fastidieux.
Paramètres régionaux (langue)
locale (langue, pays)
Paramètres régionaux (langue de chaîne, pays de chaîne, variante de chaîne)
Apache a LocaleUtils.toLocale (langage String) mais il ne prend pas en charge les deux derniers caractères en minuscules. Par exemple : zh_CN le prend en charge, mais pas zh_cn.
En me référant à d'autres méthodes, j'ai écrit le cours suivant et pris des notes, j'espère qu'il sera utile aux personnes qui résolvent des problèmes similaires.
Copiez le code comme suit :
importer java.util.Locale ;
classe publique LocaleUtil
{
private final static Locale DEFAULT_LOCALE = Locale.ENGLISH;
public final static String IETF_SEPARATOR = "-";
public final static String SEPARATOR = "_";
public final static String EMPTY_STRING = "";
public static Locale toLocale(String Language)
{
if( !StringUtil.isNullOrEmpty( langue ) )
{
return langToLocale( langue, SEPARATOR );
}
renvoie DEFAULT_LOCALE ;
}
public static Locale langToLocale(String lang, Séparateur de chaîne)
{
if( StringUtil.isNullOrEmpty( lang ) )
{
renvoie DEFAULT_LOCALE ;
}
Langage de chaîne = EMPTY_STRING ;
Pays de chaîne = EMPTY_STRING ;
Variante de chaîne = EMPTY_STRING ;
int i1 = lang.indexOf(séparateur);
si ( i1 < 0 )
{
langue = langue ;
} autre
{
langue = lang.substring(0, i1);
++i1;
int i2 = lang.indexOf( séparateur, i1);
si (i2 < 0)
{
pays = lang.substring(i1);
} autre
{
pays = lang.substring(i1, i2);
variante = lang.substring(i2+1);
}
}
if(langue.length() == 2)
{
langue = langue.toLowerCase();
}autre
{
langue = EMPTY_STRING ;
}
if(pays.length() == 2)
{
pays = pays.toUpperCase();
}autre
{
pays = EMPTY_STRING ;
}
if( (variant.length() > 0) &&
((langue.length() == 2) ||(country.length() == 2)) )
{
variante = variante.toUpperCase();
}autre
{
variante = EMPTY_STRING ;
}
renvoyer un nouveau Locale (langue, pays, variante) ;
}
}
Avis:
Copiez le code comme suit :
classe publique StringUtil
{
public static boolean isNullOrEmpty (String cible) {
return target == null || "".equals(cible);
}
}