国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Java > 正文

深入解析java中的locale

2019-11-26 16:00:07
字體:
來源:轉載
供稿:網(wǎng)友
在項目中經(jīng)常要用到將字符串解析成Locale,但是沒有一個比較好用的類。
java本身提供了3個構造函數(shù),但是實際使用過程中,需要自己解析,比較繁瑣。
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);
    }
}
發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 永寿县| 罗城| 福鼎市| 堆龙德庆县| 黑河市| 岳阳市| 台南县| 乐至县| 兴化市| 饶河县| 华池县| 县级市| 新津县| 安国市| 新丰县| 如东县| 公安县| 肥东县| 即墨市| 祁阳县| 南川市| 马尔康县| 洛南县| 嘉鱼县| 兖州市| 青阳县| 防城港市| 温宿县| 大姚县| 西平县| 绵阳市| 雅安市| 乐昌市| 会宁县| 平阳县| 郧西县| 衡南县| 四川省| 宣恩县| 临邑县| 视频|