波斯语(或阿拉伯语)数字的 Java NumberFormat

标签 java number-formatting

在基于 Web 的应用程序中,我们想要更改 fa_IR 区域设置中的数字格式。 (波斯语和阿拉伯语数字的 Unicode 与拉丁数字不同)。 java不支持此功能(对于swing基础应用程序,您可以使用形状数字http://docs.oracle.com/javase/tutorial/i18n/text/shapedDigits.html)

无论如何,这个格式化程序会将 ASCII 数字替换为 unicode 波斯数字。算法很简单,进行如下替换

0 >>>> \u06F0
1 >>>> \u06F1
2 >>>> \u06F2
3 >>>> \u06F3
4 >>>> \u06F4
5 >>>> \u06F5
6 >>>> \u06F6
7 >>>> \u06F7
8 >>>> \u06F8
9 >>>> \u06F9

虽然我们可以编写一个简单的转换器并在每次向用户显示数字之前调用它,但我们正在寻找更好的解决方案。我们想要扩展 Java Locale 并向其中添加新的 NumberFormate。

我们相信通过这种方法,我们将用波斯数字显示波斯数字,并且我们仍然会有其他数字格式选项。例如,#0.0## 用于格式化数字。

请告诉我如何扩展java数字格式并将其注册到fa_IR?! 另请告诉我我对格式的假设是否正确。

最佳答案

我认为您可以使用区域设置敏感服务 SPI 来完成此操作:http://docs.oracle.com/javase/tutorial/i18n/locale/services.html

关于波斯语(或阿拉伯语)数字的 Java NumberFormat,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19068106/

相关文章:

java - 按后退按钮不会关闭 Android 应用程序

LocalDate 和 DateTimeFormatter 的 Java 6 替代品

java - 如何使用 Xpath 正确地从 XML 传递对象

cocoa - 将 NSNumberFormatter 的负数格式从 (xxx.xx) 更改为 -xxx.xx

java - 使 JFormattedTextField 的行为类似于 ATM 输入

java - JTable Oracle Timestamp 列不显示

java - 打包时如何使maven "add directory entries"?

qt - 如何在 Qt 的模型/ View 框架中添加数字格式?

coldfusion - 在 ColdFusion 中,如果小数为 0,是否有 numberFormat() 掩码可以删除小数?

php - 使用 number_format 添加千位分隔符