深入解析java中的locale
更新時間:2013年08月27日 10:19:40 作者:
以下是對java中的locale進行了深入的分析介紹,需要的朋友可以過來參考下
在項目中經(jīng)常要用到將字符串解析成Locale,但是沒有一個比較好用的類。
java本身提供了3個構(gòu)造函數(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);
}
}
java本身提供了3個構(gòu)造函數(shù),但是實際使用過程中,需要自己解析,比較繁瑣。
Locale(langugae)
locale(language,country)
Locale(String language, String country, String variant)
Apache 有個 LocaleUtils.toLocale(String language)但是不支持最后2個字符為小寫的,如:zh_CN支持, zh_cn就不支持。
參考其它方法,寫了下面的類,做個筆記,也希望對解決類似問題的人有點幫助。
復(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單元測試獲取不到bean注入的解決方式
這篇文章主要介紹了idea +junit單元測試獲取不到bean注入的解決方式,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-08-08
Spring?Boot對接Oracle數(shù)據(jù)庫具體流程
這篇文章主要給大家介紹了關(guān)于Spring?Boot對接Oracle數(shù)據(jù)庫的具體流程,本文將介紹如何在Spring Boot中連接Oracle數(shù)據(jù)庫的基本配置,包括添加依賴、配置數(shù)據(jù)源、配置JPA等,需要的朋友可以參考下2023-11-11
java Unicode和UTF-8之間轉(zhuǎn)換實例
這篇文章主要介紹了java Unicode和UTF-8之間轉(zhuǎn)換實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-09-09
初識sa-token及登錄授權(quán)簡單實現(xiàn)
這篇文章主要為大家介紹了sa-token及登錄授權(quán)簡單實現(xiàn)示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2023-07-07

