我必须将英文数字转换成中文数字。但是中文数字系统与英文数字系统不同。有没有办法在运行时将英文数字转换成中文?
n9vozmp41#
而不是滚动自己的,最好使用ICU4JNumberFormat作为@mcdowell的答案。唯一不同的是编号系统ID "hansfin"应该替换为"hans",如果你想转换61305到"六万一千三百零五"。
"hansfin"
"hans"
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 陆万壹仟叁佰零伍 hantfin 陸萬壹仟參佰零伍
型hans是“Han Simplified”(即简体中文)的缩写,而hant是“Han Traditional”(即繁体中文),fin是“Finance”。
hans
hant
fin
hsgswve42#
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));
字符串
gzjq41n43#
如果是这样的话,我建议你为它建立一个哈希表。这并不难开始。我们知道中国的'数字'几乎是由以下定义的:参见:http://en.wikipedia.org/wiki/Chinese_numerals有了这些,我认为你完全有能力在你的编程语言偏好java中构建一个表。
3条答案
按热度按时间n9vozmp41#
而不是滚动自己的,最好使用ICU4JNumberFormat作为@mcdowell的答案。
唯一不同的是编号系统ID
"hansfin"
应该替换为"hans"
,如果你想转换61305
到"六万一千三百零五"
。字符串
以下是不同编号系统ID的结果。
型
hans
是“Han Simplified”(即简体中文)的缩写,而hant
是“Han Traditional”(即繁体中文),fin
是“Finance”。hsgswve42#
ICU4J支持:
字符串
gzjq41n43#
如果是这样的话,我建议你为它建立一个哈希表。这并不难开始。我们知道中国的'数字'几乎是由以下定义的:参见:http://en.wikipedia.org/wiki/Chinese_numerals
有了这些,我认为你完全有能力在你的编程语言偏好java中构建一个表。