Dalam proyek, kita sering kali perlu mengurai string ke dalam Lokal, tetapi tidak ada kelas yang mudah digunakan.
Java sendiri menyediakan 3 konstruktor, namun dalam penggunaan sebenarnya, Anda perlu menguraikannya sendiri, yang relatif rumit.
Lokal (langugae)
lokal (bahasa, negara)
Lokal (Bahasa string, Negara string, varian string)
Apache memiliki LocaleUtils.toLocale (Bahasa string) tetapi tidak mendukung dua karakter terakhir berupa huruf kecil. Misalnya: zh_CN mendukungnya, tetapi zh_cn tidak.
Mengacu pada metode lain, saya menulis kelas berikut dan membuat catatan. Saya harap ini dapat bermanfaat bagi orang-orang yang memecahkan masalah serupa.
Copy kode kodenya sebagai berikut:
import java.util.Locale;
LocaleUtil kelas publik
{
private final static Lokal DEFAULT_LOCALE = Lokal.ENGLISH;
String statis akhir publik IETF_SEPARATOR = "-";
SEPARATOR String statis akhir publik = "_";
String statis akhir publik EMPTY_STRING = "";
Lokal statis publik toLokal (Bahasa string)
{
if( !StringUtil.isNullOrEmpty( bahasa ) )
{
return langToLocale( bahasa, SEPARATOR );
}
kembalikan DEFAULT_LOCALE;
}
langToLocale Lokal statis publik( String lang , Pemisah string )
{
jika( StringUtil.isNullOrEmpty( lang ) )
{
kembalikan DEFAULT_LOCALE;
}
Bahasa string = EMPTY_STRING;
String negara = EMPTY_STRING;
Varian string = EMPTY_STRING;
int i1 = lang.indexOf(pemisah);
jika ( i1 < 0 )
{
bahasa = bahasa;
} kalau tidak
{
bahasa = lang.substring(0, i1);
++i1;
int i2 = lang.indexOf( pemisah, i1);
jika (i2 < 0)
{
negara = lang.substring(i1);
} kalau tidak
{
negara = lang.substring(i1, i2);
varian = lang.substring(i2+1);
}
}
if(bahasa.panjang() == 2)
{
bahasa = bahasa.toLowerCase();
}kalau tidak
{
bahasa = EMPTY_STRING;
}
if(negara.panjang() == 2)
{
negara = negara.toUpperCase();
}kalau tidak
{
negara = EMPTY_STRING;
}
if( (varian.panjang() > 0) &&
((bahasa.panjang() == 2) ||(negara.panjang() == 2)) )
{
varian = varian.toUpperCase();
}kalau tidak
{
varian = EMPTY_STRING;
}
kembalikan Lokal baru (bahasa, negara, varian);
}
}
Melihat:
Copy kode kodenya sebagai berikut:
StringUtil kelas publik
{
boolean statis publik isNullOrEmpty(String target) {
kembalikan target == null ||. "".sama dengan (target);
}
}