java - 使用 icu4j 格式化数字(拼写)

标签 java icu

我想通过用语言环境拼写数字来本地化数字,最后使用了 ICU4J。 我在许多地区都取得了成功,但似乎没有在格鲁吉亚、土耳其或阿拉伯语等地区完成。

ULocale locale = new ULocale("Tr");  //Turkish
Double d = Double.parseDouble(input);
NumberFormat formatter = new RuleBasedNumberFormat(locale, RuleBasedNumberFormat.SPELLOUT);
String result = formatter.format(d);

当我调试格式化程序对象内部的规则集时,它看起来是空的,并且它以英语打印出来(我猜是默认设置)。

在 ICU 网站上写道: ICU 为多个区域设置提供了数字拼写规则,但不是 ICU 支持的所有区域设置,也不是所有预定义的规则类型。此外,从 2.6 版开始,一些提供的规则已知不完整。

但似乎 ICU 自己的演示页面也可以针对该语言环境执行此操作( http://demo.icu-project.org/icu4jweb/numero.jsp )

我还可以在 .m2 文件夹下的 icu5j-53.1.jar 中找到 .res 文件 (\icu4j-53.1\com\ibm\icu\impl\data\icudt53b\rbnf)

对于演示页面如何做到这一点以及为什么我不能做到这一点的任何帮助,我将不胜感激?

最佳答案

我已经用 53.1 版测试了您的代码,得到了正确的土耳其语输出。然后我用 3.4.4 版重新测试并得到了你在问题中描述的英文输出。

很可能,您正在通过可传递的 Maven 依赖项引入旧版本。

关于java - 使用 icu4j 格式化数字(拼写),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24141988/

相关文章:

r - 将拉丁字母音译为古希腊字母

node.js - libicui18n.so.52 : cannot open shared object file

java - glNormal3f 和 glNormalPointer 之间的区别

c++ - 在 Win32 上使用 icu u32_regex 内存泄漏/缓存提升

java - 整个项目分成不同的模块时如何避免依赖问题

java - Java 中有 Point 类吗?

c - 如何使用 C API 从 ICU4C UChar * 转换为 char *(以打印 Unicode 字符串)?

elasticsearch - 使用日语文本的icu_collat​​ion的嵌套排序导致CircuitBreakingException

java - 文件路径在 JAR 文件内不起作用

java - 有没有办法获取AWS IoT核心证书的通用名称