阿拉伯数字转中文数字工具类

在有些实际场景中,我们有时候需要把阿拉伯数字转为中文数字。在中文数字里,我们习惯说十,不说一十,习惯说十一,不说一十一,所以在代码里需要把这一口语习惯考虑进去。另外,我们习惯说一千零一 ,不说一千零零一,在代码里也需要考虑这些。具体代码如下:
1.工具类

package com.mayi1203.myproject.util;

/**
 * 阿拉伯数字转中文数字工具类,只考虑1到99999的转换。
 * @author 码蚁1203
 * @date   2020年4月5日
 */
public final class NumberUtils {

	public static final String[] CHINESE_NUMBERS = {"零", "一", "二", "三", "四", "五", "六", "七", "八", "九"};
	public static final String[] CHINESE_NUMBER_UNIT = {"十", "百", "千", "万"};
	public static final String BLANK_STRING = "";
	
	public static final String ArabicToChinese(int number) {
		if(number > 99999 || number < 1) {
			return BLANK_STRING;
		}
		String source = String.valueOf(number);
		String result = BLANK_STRING;
		int length = source.length();
		for(int i = 0; i < length; i++) {
			int chineseNumber = source.charAt(i) - '0';
			int len = result.length();
			if(i == 0 && chineseNumber == 1 && length == 2) {
				result +=  CHINESE_NUMBER_UNIT[0];
			}else if(i != length - 1 && chineseNumber != 0) {
				result += CHINESE_NUMBERS[chineseNumber] + CHINESE_NUMBER_UNIT[length - i - 2];
			}else if(i == length - 1 && chineseNumber != 0) {
				result += CHINESE_NUMBERS[chineseNumber];
			}else if(i != length - 1 && chineseNumber == 0 
					&& !result.substring(len - 1, len).equals(CHINESE_NUMBERS[chineseNumber])) {
				result += CHINESE_NUMBERS[chineseNumber];
			}
		}
		return result;
	}
}

2.测试类
2.1 测试单个数字

package com.mayi1203.myproject.util;

/**
 * 测试类
 * @author 码蚁1203
 * @date   2020年4月5日
 */
public class Test {

	public static void main(String[] args) {
		int number = 1;
		System.out.println(NumberUtils.ArabicToChinese(number));
	}

}

打印结果:

2.2 测试十

package com.mayi1203.myproject.util;

/**
 * 测试类
 * @author 码蚁1203
 * @date   2020年4月5日
 */
public class Test {

	public static void main(String[] args) {
		int number = 10;
		System.out.println(NumberUtils.ArabicToChinese(number));
	}

}

打印结果:

2.3 测试三个数字

package com.mayi1203.myproject.util;

/**
 * 测试类
 * @author 码蚁1203
 * @date   2020年4月5日
 */
public class Test {

	public static void main(String[] args) {
		int number = 101;
		System.out.println(NumberUtils.ArabicToChinese(number));
	}

}

打印结果:

一百零一

2.4 测试四个数字

package com.mayi1203.myproject.util;

/**
 * 测试类
 * @author 码蚁1203
 * @date   2020年4月5日
 */
public class Test {

	public static void main(String[] args) {
		int number = 1001;
		System.out.println(NumberUtils.ArabicToChinese(number));
	}

}

打印结果:

一千零一

2.5 测试五个数字

package com.mayi1203.myproject.util;

/**
 * 测试类
 * @author 码蚁1203
 * @date   2020年4月5日
 */
public class Test {

	public static void main(String[] args) {
		int number = 99009;
		System.out.println(NumberUtils.ArabicToChinese(number));
	}

}

打印结果:

九万九千零九
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值