当前位置: 首页 > 面试题库 >

Java覆盖特定语言环境的语言环境设置

姬天逸
2023-03-14
问题内容

NumberFormat.getCurrencyInstance().format(amount)用来将货币从BigDecimal格式化为字符串。按预期工作,问题在于我们的主要目标是荷兰市场,而默认的荷兰格式很奇怪。

让我解释一下,当格式化-125时,荷兰语将得到“€125-”(预期为“-€125”)。英国按预期方式提供“-£125.50”。

我可以检查语言环境是否为荷兰语,然后在每次我要设置小数格式时都提供一个模式。但是我更喜欢一个解决方案,它可以覆盖荷兰的格式设置。我在考虑以下内容:

Locale nlLocale = new Locale("nl", "NL");
NumberFormat.getCurrencyInstance(new Locale("nl", "NL")).setFormatPattern("€ #");

这样,每次在格式化时使用荷兰语语言环境时,都会得到自定义格式。是否存在类似的解决方案?


问题答案:

撇开该特定格式是否“正确”的问题,更改“
nl”语言环境的货币实例的方法是实现并配置LocaleServiceProvider数字格式服务的自定义。(provider类需要子类NumberFormatProvider,但是超类javadoc解释了如何配置provider。)

NumberFormat对于您所关注的特定情况,提供程序需要返回非标准实例,但在其他情况下(大概)委托给默认提供程序。



 类似资料:
  • 问题内容: 当我在Linux机器上使用默认的Java语言环境时,它带有美国语言环境设置,应在哪里进行更改以使其具有正确的语言环境? 问题答案: 我相信Java会从启动它的环境变量中收集这些信息,因此您需要确保正确设置LANG和LC_ *环境变量。 语言环境手册页包含有关所述环境变量的完整信息。

  • 问题内容: 我刚刚安装了jre7,很惊讶地看到我的默认语言环境现在是en_US。对于jre6,它是de_CH。 jre7有什么不同?默认语言环境不再是操作系统之一吗?(顺便说一句,我正在使用Windows7) 谢谢你的回答。 编辑:我已经看到了 Category.FORMAT 的语言环境是“旧”的(de_CH)。区域设置为 Category.DISPLAY 从OS的语言的语言(在Windows中,

  • 问题内容: 我在Java语言环境中发现了许多缺少的国家/地区-如果我打印出可用语言环境的列表, 我缺少许多国家,包括尼日利亚,伊朗,吉尔吉斯斯坦和巴基斯坦。任何人都可以对此进行说明,或者是否有更好(更全面)的方法来获取Java国家列表? 1.6.0_16-b01 问题答案: 世界上的国家和地区之间没有一对一的映射。语言环境指定区域。它们旨在标记诸如语言多样性之类的东西。只是一个明确的例子:印度,斯

  • 问题内容: 我在Edittext的addTextChangedListener方法中已自定义,一切正常,但是当我更改语言(语言环境)时,我的addTextChangedListener无法正常工作。 我搜索了我的问题并找到了解决方案: 但我不知道如何使用此代码。 问题答案: 您可以尝试先转换为,然后将其投射到

  • 主要内容:使用DartPad在线执行脚本,设置本地环境,IDE支持,dart2js工具本章讨论在Windows平台上为Dart设置执行环境。 使用DartPad在线执行脚本 可以使用 https://dartpad.dartlang.org/ 上的在线编辑器在线运行测试脚本。Dart编辑器执行脚本并显示HTML和控制台输出。在线编辑器附带一组预设代码示例。 Dartpad编辑器的截图如下 - Dartpad还可以以更严格的方式进行编码。通过检查编辑器右下角的强模式选项来实现。强模式

  • Go 语言支持以下系统: Linux FreeBSD Mac OS X(也称为 Darwin) Window 安装包下载地址为:https://golang.org/dl/。 如果打不开可以使用这个地址:https://golang.google.cn/dl/。 各个系统对应的包名: 操作系统 包名 Windows go1.4.windows-amd64.msi Linux go1.4.linux