我需要将Locale转换为String,我该怎么做:
我有Locale loc和String loc1,需要将locale中的值转换为String。谢谢
答案 0 :(得分: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);
在Java 7之前,您确实需要使用toString()
并手动处理国家/地区和变体(对于Locale,最多包含三个由分隔符和下划线分隔的标识符,即no_NO_NY。)
广告2.如果您需要将区域设置传递到系统的其他部分(即网络服务),toString()
可能也可能不是您要查找的内容。这是因为我上面写的内容 - 如果你需要破折号作为分隔符并且不太关心变体,我会使用getLanguage()和getCountry()方法而不是普通toString()
:
Locale uiLocale = Locale.getDefault(Locale.Category.DISPLAY);
String localeId = MessageFormat.format("{0}-{1}",
uiLocale.getLanguage(),
uiLocale.getCountry());
从1.4版开始,此方法适用于Java版本。
广告3.如果您想要显示语言,国家/地区或地区显示名称,以便用户可以选择有效的区域设置(即在他/她的个人资料中),您可能需要的是getDisplayCountry(Locale),{{ 3}}和getDisplayLanguage(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);
答案 1 :(得分:2)
根据您要对其进行的操作,您可以使用Locale类的toString方法:
http://docs.oracle.com/javase/7/docs/api/java/util/Locale.html#toString%28%29
答案 2 :(得分:0)
它非常简单,只需使用下面的代码,考虑使用locale将iso当前的calander日期转换为Hijri Calander。
mouse.x = ( (event.clientX -renderer.domElement.offsetLeft) / renderer.domElement.width ) * 2 - 1;
mouse.y = -( (event.clientY - renderer.domElement.offsetTop) / renderer.domElement.height ) * 2 + 1;
var deltaX = event.clientX - mouseX;
var deltaY = event.clientY - mouseY;
raycaster.setFromCamera(mouse, camera);
var intersects = raycaster.intersectObjects(interactiveObj, true);