gpt4 book ai didi

Java 语言环境到字符串

转载 作者:行者123 更新时间:2023-12-04 12:08:26 25 4
gpt4 key购买 nike

我需要将 Locale 转换为 String,我该怎么做:

我有 Locale loc 和 String loc1,需要将值从 locale 转换为 String。谢谢

最佳答案

这实际上取决于您使用的 Java 版本。当您说转换为字符串时,我假设您可能想要:

  • 将其转换为 Locale 标识符,以便您将来可以轻松地重新创建 Locale。
  • 将其作为字符串表示形式传递给系统的某些部分。
  • 获取(可能是本地的)语言、国家或 Locale 对象的名称。

  • 其他人向您指出了一份文档,但我认为最好先了解几种可能性。

    广告 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. 如果您需要将 Locale 传递给系统的其他部分(即 Web 服务), 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) , getDisplayLanguage(Locale)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);

    关于Java 语言环境到字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9536018/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com