源码网商城,靠谱的源码在线交易网站 我的订单 购物车 帮助

源码网商城

深入解析java中的locale

  • 时间:2021-12-13 04:49 编辑: 来源: 阅读:
  • 扫一扫,手机访问
摘要:深入解析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就不支持。 参考其它方法,写了下面的类,做个笔记,也希望对解决类似问题的人有点帮助。
[u]复制代码[/u] 代码如下:
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 );         } }
[b]注意: [/b]
[u]复制代码[/u] 代码如下:
 public class StringUtil {     public static boolean isNullOrEmpty(String target) {         return target == null || "".equals(target);     } }
  • 全部评论(0)
联系客服
客服电话:
400-000-3129
微信版

扫一扫进微信版
返回顶部