我必须将英文数字转换为中文数字。但是中国的数字系统与英语不同。我有办法转换英文编号在运行时转换为中文。
谢谢。 维克拉姆
答案 0 :(得分:2)
ICU4J支持此:
Locale chineseNumbers = new Locale("en_US@numbers=hansfin");
com.ibm.icu.text.NumberFormat formatter =
com.ibm.icu.text.NumberFormat.getInstance(chineseNumbers);
System.out.println(formatter.format(100));
使用4.8版进行测试。
答案 1 :(得分:2)
建议您使用ICU4J NumberFormat作为@ mcdowell的答案,而不是自己动手。
如果您希望将"hansfin"
转换为"hans"
,则唯一不同的是编号系统ID 61305
应替换为"六万一千三百零五"
。
Locale chineseNumbers = new Locale("C@numbers=hans");
com.ibm.icu.text.NumberFormat formatter =
com.ibm.icu.text.NumberFormat.getInstance(chineseNumbers);
System.out.println(formatter.format(61305));
以下是不同编号系统ID的结果。
hans 六万一千三百零五
hant 六萬一千三百零五
hansfin 陆万壹仟叁佰零伍
hansfin 陸萬壹仟參佰零伍
hans
是“Han Simplified”(即简体中文)的缩写,而hant
是“Han Traditional”(即繁体中文),fin
是“Finance” ”
答案 2 :(得分:0)
在那种情况下, 我建议你为它构建一个哈希表。 开始并不困难。 我们知道中国的“数字”几乎被定义为: 请参阅:http://en.wikipedia.org/wiki/Chinese_numerals
有了这个,我认为你有能力在你的编程语言首选项java中构建一个表。