في المشاريع، غالبًا ما نحتاج إلى تحليل السلاسل إلى لغات، ولكن لا توجد فئة سهلة الاستخدام.
توفر Java نفسها 3 مُنشئات، ولكن في الاستخدام الفعلي، تحتاج إلى تحليلها بنفسك، وهو أمر مرهق نسبيًا.
لغة (لغات)
اللغة (اللغة، البلد)
الإعدادات المحلية (لغة السلسلة، بلد السلسلة، متغير السلسلة)
يحتوي Apache على LocaleUtils.toLocale (لغة السلسلة) ولكنه لا يدعم كون آخر حرفين صغيرين. على سبيل المثال: يدعمها zh_CN، لكن zh_cn لا يدعمها.
بالإشارة إلى طرق أخرى، كتبت الفصل التالي وقمت بتدوين الملاحظات وآمل أن يكون مفيدًا للأشخاص الذين يحلون مشكلات مماثلة.
انسخ رمز الكود كما يلي:
import java.util.Locale;
الفئة العامة LocaleUtil
{
لغة ثابتة نهائية خاصة DEFAULT_LOCALE = Locale.ENGLISH؛
السلسلة الثابتة النهائية العامة IETF_SEPARATOR = "-"؛
سلسلة ثابتة نهائية عامة SEPARATOR = "_"؛
السلسلة الثابتة النهائية العامة EMPTY_STRING = ""؛
لغة عامة ثابتة toLocale (لغة السلسلة)
{
إذا ( !StringUtil.isNullOrEmpty( لغة ) )
{
إرجاع langToLocale( language, SEPARATOR );
}
إرجاع DEFAULT_LOCALE؛
}
اللغة الثابتة العامة langToLocale (String lang، فاصل السلسلة)
{
إذا (StringUtil.isNullOrEmpty( lang ) )
{
إرجاع DEFAULT_LOCALE؛
}
لغة السلسلة = EMPTY_STRING؛
بلد السلسلة = EMPTY_STRING؛
متغير السلسلة = EMPTY_STRING؛
int i1 = lang.indexOf(separator);
إذا (i1 < 0)
{
لغة = لانج؛
} آخر
{
اللغة = lang.substring(0, i1);
++i1;
int i2 = lang.indexOf(separator, i1);
إذا (i2 <0)
{
البلد = lang.substring(i1);
} آخر
{
البلد = lang.substring(i1, i2);
البديل = lang.substring(i2+1);
}
}
إذا (اللغة. الطول () == 2)
{
اللغة = language.toLowerCase();
}آخر
{
اللغة = EMPTY_STRING؛
}
إذا (country.length() == 2)
{
بلد = بلد.toUpperCase();
}آخر
{
البلد = EMPTY_STRING؛
}
إذا( (variant.length() > 0) &&
((language.length() == 2) ||(country.length() == 2)) )
{
البديل =variant.toUpperCase();
}آخر
{
البديل = EMPTY_STRING؛
}
إرجاع لغة جديدة (اللغة، البلد، البديل)؛
}
}
يلاحظ:
انسخ رمز الكود كما يلي:
فئة عامة StringUtil
{
المنطق المنطقي العام الثابت هوNullOrEmpty(String target) {
return target == null ||.equals(target);
}
}