Jac*_* Jr 2 java string locale
我需要将Locale转换为String,我该怎么做:
我有Locale loc和String loc1,需要将locale中的值转换为String.谢谢
Paw*_*yda 22
这实际上取决于您使用的Java版本.当你说转换为String时,我假设你可能想:
其他人指出你的文档,但我认为最好走几个可能性.
广告1.如果您需要转换为区域设置标识符,Java 7中的最佳方法(以前的版本中并不存在)是toLanguageTag().
这是因为您可以轻松地将Locale标识符存储在字符串中(包括所有选项,如脚本,Unicode扩展等),并使用forLanguageTag(String)重新创建Locale对象,而不会丢失信息.简单toString()不拥有此属性.
以下代码片段说明了我的观点:
Locale locale = Locale.getDefault(Locale.Category.DISPLAY);
String localeId = locale.toLanguageTag();
Locale recreatedLocale = Locale.forLanguageTag(localeId);
Run Code Online (Sandbox Code Playgroud)
在Java 7之前,您确实需要使用toString()并手动处理国家/地区和变体(对于Locale包含最多三个由分隔符和下划线分隔的标识符,即no_NO_NY.)
广告2.如果您需要将Locale传递到系统的其他部分(即Web服务),toString()可能也可能不是您要查找的内容.这是因为我上面写的内容 - 如果你需要破折号作为分隔符并且不太关心变体,我会使用getLanguage()和getCountry()方法而不是简单toString():
Locale uiLocale = Locale.getDefault(Locale.Category.DISPLAY);
String localeId = MessageFormat.format("{0}-{1}",
uiLocale.getLanguage(),
uiLocale.getCountry());
Run Code Online (Sandbox Code Playgroud)
从版本1.4开始,此方法应与Java版本一起使用.
广告3.如果要显示语言,国家/地区或区域设置显示名称,以便用户可以选择有效的区域设置(即在他/她的个人资料中),您可能要查找的是getDisplayCountry(区域设置),getDisplayLanguage(区域设置)和getDisplayName (Locale).您可以使用它们以目标用户语言显示名称(前提是JVM具有适当的翻译,对于许多语言都是如此):
Locale uiLocale = Locale.getDefault(Locale.Category.DISPLAY);
String languageName = uiLocale.getDisplayLanguage(uiLocale);
String countryName = uiLocale.getDisplayLanguage(uiLocale);
// usually something like langage (country), i.e. polski (Polska)
String localeName = uiLocale.getDisplayName(uiLocale);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
17167 次 |
| 最近记录: |