日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

java Locale 解析方法

發布時間:2025/4/5 编程问答 22 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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 解析方法的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。