java Locale 解析方法
生活随笔
收集整理的這篇文章主要介紹了
java Locale 解析方法
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
在項目中經常要用到將字符串解析成Locale,但是沒有一個比較好用的類。
java本身提供了3個構造函數,但是實際使用過程中,需要自己解析,比較繁瑣。
Locale(langugae)
locale(language,country)
?
Locale(String language, String country, String variant)Apache 有個 LocaleUtils.toLocale(String language)但是不支持最后2個字符為小寫的,如:zh_CN支持, zh_cn就不支持。
?參考其它方法,寫了下面的類,做個筆記,也希望對解決類似問題的人有點幫助。
?
?
import?java.util.Locale;public?class?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(?language?)?)
????????{
????????????return?langToLocale(?language,?SEPARATOR?);
????????}
????????return?DEFAULT_LOCALE;
????}
??????
?????public?static?Locale?langToLocale(?String?lang?,?String?separator?)
?????{
???????????if(?StringUtil.isNullOrEmpty(?lang?)?)
???????????{?
????????????????return?DEFAULT_LOCALE;
???????????}
????????????String?language?=?EMPTY_STRING;
????????????String?country?=??EMPTY_STRING;
????????????String?variant?=??EMPTY_STRING;
????????????int?i1?=?lang.indexOf(?separator?);
????????????if?(?i1?<?0?)
????????????{
????????????????language?=?lang;
????????????}?else?
????????????{
????????????????language?=?lang.substring(0,?i1);
????????????????++i1;
????????????????int?i2?=?lang.indexOf(?separator,?i1);
????????????????if?(i2?<?0)?
????????????????{
????????????????????country?=?lang.substring(i1);
????????????????}?else?
????????????????{
????????????????????country?=?lang.substring(i1,?i2);
????????????????????variant?=?lang.substring(i2+1);
????????????????}
????????????}
????????????
????????????if(language.length()?==?2)
????????????{
???????????????language?=?language.toLowerCase();
????????????}else?
????????????{
??????????????language?=?EMPTY_STRING;
????????????}
????????????
????????????if(country.length()?==?2)
????????????{
???????????????country?=?country.toUpperCase();
????????????}else?
????????????{
??????????????country?=?EMPTY_STRING;
????????????}
????????????
????????????if(?(variant.length()?>?0)?&&?
????????????????((language.length()?==?2)?||(country.length()?==?2))?)
????????????{
???????????????variant?=?variant.toUpperCase();
????????????}else
????????????{
????????????????variant?=?EMPTY_STRING;
????????????}
?????????????????
????????????return?new?Locale(language,?country,?variant?);
????????}
}
?
注意:
public class StringUtil {
??? public static boolean isNullOrEmpty(String target) {
?? ??? ?return target == null || "".equals(target);
?? ?}
}
?
轉載于:https://www.cnblogs.com/likwo/archive/2010/12/17/1909357.html
總結
以上是生活随笔為你收集整理的java Locale 解析方法的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 强烈推荐Bulletproof Ajax
- 下一篇: 设置开机从cd启动怎么办 电脑开机如何从