最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

深入解析java中的locale

 更新時(shí)間:2013年08月27日 10:19:40   作者:  
以下是對(duì)java中的locale進(jìn)行了深入的分析介紹,需要的朋友可以過來參考下
在項(xiàng)目中經(jīng)常要用到將字符串解析成Locale,但是沒有一個(gè)比較好用的類。
java本身提供了3個(gè)構(gòu)造函數(shù),但是實(shí)際使用過程中,需要自己解析,比較繁瑣。
Locale(langugae)
locale(language,country)

Locale(String language, String country, String variant)
Apache 有個(gè) LocaleUtils.toLocale(String language)但是不支持最后2個(gè)字符為小寫的,如:zh_CN支持, zh_cn就不支持。

參考其它方法,寫了下面的類,做個(gè)筆記,也希望對(duì)解決類似問題的人有點(diǎn)幫助。
復(fù)制代碼 代碼如下:

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 );
        }
}

注意:
復(fù)制代碼 代碼如下:

 public class StringUtil
{
    public static boolean isNullOrEmpty(String target) {
        return target == null || "".equals(target);
    }
}

相關(guān)文章

  • idea +junit單元測(cè)試獲取不到bean注入的解決方式

    idea +junit單元測(cè)試獲取不到bean注入的解決方式

    這篇文章主要介紹了idea +junit單元測(cè)試獲取不到bean注入的解決方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2020-08-08
  • Java CGLib動(dòng)態(tài)代理機(jī)制(全面解析)

    Java CGLib動(dòng)態(tài)代理機(jī)制(全面解析)

    下面小編就為大家?guī)硪黄狫ava CGLib動(dòng)態(tài)代理機(jī)制(全面解析)。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2017-08-08
  • java實(shí)現(xiàn)打磚塊小游戲

    java實(shí)現(xiàn)打磚塊小游戲

    這篇文章主要為大家詳細(xì)介紹了java實(shí)現(xiàn)打磚塊小游戲,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-05-05
  • Netty粘包拆包及使用原理詳解

    Netty粘包拆包及使用原理詳解

    Netty是由JBOSS提供的一個(gè)java開源框架,現(xiàn)為?Github上的獨(dú)立項(xiàng)目。Netty提供異步的、事件驅(qū)動(dòng)的網(wǎng)絡(luò)應(yīng)用程序框架和工具,用以快速開發(fā)高性能、高可靠性的網(wǎng)絡(luò)服務(wù)器和客戶端程序,這篇文章主要介紹了Netty粘包拆包及使用原理
    2022-08-08
  • 如何優(yōu)雅的進(jìn)行Spring整合MongoDB詳解

    如何優(yōu)雅的進(jìn)行Spring整合MongoDB詳解

    這篇文章主要給大家介紹了如何優(yōu)雅的進(jìn)行Spring整合MongoDB的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧。
    2018-02-02
  • 淺析java中遍歷map的兩種方式

    淺析java中遍歷map的兩種方式

    本篇文章主要分享了java中遍歷map的兩種方式,代碼簡(jiǎn)潔明了,有需要的朋友可以參考下,希望會(huì)有所幫助
    2016-12-12
  • Spring?Boot對(duì)接Oracle數(shù)據(jù)庫(kù)具體流程

    Spring?Boot對(duì)接Oracle數(shù)據(jù)庫(kù)具體流程

    這篇文章主要給大家介紹了關(guān)于Spring?Boot對(duì)接Oracle數(shù)據(jù)庫(kù)的具體流程,本文將介紹如何在Spring Boot中連接Oracle數(shù)據(jù)庫(kù)的基本配置,包括添加依賴、配置數(shù)據(jù)源、配置JPA等,需要的朋友可以參考下
    2023-11-11
  • Java設(shè)計(jì)模式常用的七大原則總結(jié)

    Java設(shè)計(jì)模式常用的七大原則總結(jié)

    今天給大家總結(jié)了Java設(shè)計(jì)模式的七大原則,主要有單一職責(zé)原則,接口隔離原則,依賴倒轉(zhuǎn)原則,里氏替換原則等,文中有非常詳細(xì)的介紹,需要的朋友可以參考下
    2021-06-06
  • java Unicode和UTF-8之間轉(zhuǎn)換實(shí)例

    java Unicode和UTF-8之間轉(zhuǎn)換實(shí)例

    這篇文章主要介紹了java Unicode和UTF-8之間轉(zhuǎn)換實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2020-09-09
  • 初識(shí)sa-token及登錄授權(quán)簡(jiǎn)單實(shí)現(xiàn)

    初識(shí)sa-token及登錄授權(quán)簡(jiǎn)單實(shí)現(xiàn)

    這篇文章主要為大家介紹了sa-token及登錄授權(quán)簡(jiǎn)單實(shí)現(xiàn)示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-07-07

最新評(píng)論

行唐县| 望奎县| 荃湾区| 福建省| 电白县| 襄城县| 平乡县| 玉林市| 黔江区| 定州市| 西城区| 平原县| 来宾市| 马边| 扶沟县| 平安县| 铁岭市| 资兴市| 泗洪县| 郯城县| 靖安县| 乌兰县| 文山县| 张家港市| 辉县市| 白朗县| 长治市| 海原县| 东乌珠穆沁旗| 南投县| 久治县| 徐闻县| 屏山县| 谢通门县| 库伦旗| 翼城县| 周口市| 鹿泉市| 乡城县| 廉江市| 乐安县|