![cover](https://image.oss.salted-fish.tech/blog/20191010170130722.png)
Java阿拉伯数字转中文数字
带单位转换的我只将数字范围定在十万以内的正数并且没考虑
0
需要向上调整范围的童鞋自己修改代码呦欢迎指出错误
先看效果再看代码
不多说屁话上代码
/**
* <p>@description: 阿拉伯数字转中文数字(不带单位) </p>
* <p>@method: numberConvertToBaseChinese </p>
* <p>@author: 枫铃也 </p>
* <p>@since: 2019-10-10 16:03 </p>
*
* <p>@return java.lang.String </p>
*/
public static String numberConvertToBaseChinese(int num) {
StringBuffer buffer = new StringBuffer();
char[] nums = {'零', '一', '二', '三', '四', '五', '六', '七', '八', '九'};
char[] baseChar = Integer.toString(num).toCharArray();
for (char c : baseChar) {
buffer.append(nums[c - 48]);
}
return buffer.toString();
}
/**
* <p>@description: 阿拉伯数字转中文数字(带单位) </p>
* <p>@method: numberConvertToChinese </p>
* <p>@author: 枫铃也 </p>
* <p>@since: 2019-10-10 16:03 </p>
*
* <p>@return java.lang.String </p>
*/
public static String numberConvertToChinese(int num) {
char[] nums = {'零', '一', '二', '三', '四', '五', '六', '七', '八', '九'};
char[] units = {' ', '十', '百', '千', '万'};
char[] baseChar = Integer.toString(num).toCharArray();
char[] numChar = new char[baseChar.length];
for (int i = 0; i < baseChar.length; i++) {
numChar[i] = nums[baseChar[i] - 48];
}
char[] unit = new char[numChar.length];
unit = Arrays.copyOf(units, unit.length);
StringBuffer buffer = new StringBuffer();
for (int i = 0; i < numChar.length; i++) {
if (numChar[i] != nums[0]) {
buffer.append(numChar[i]).append(unit[unit.length - i - 1]);
}else {
buffer.append(numChar[i]);
}
}
int index = 0;
while ((index = buffer.indexOf(nums[0] + String.valueOf(nums[0]))) > 0) {
buffer.replace(index, index + 2, String.valueOf(nums[0]));
}
return buffer.toString().substring(0, buffer.length() - 1);
}
神马,没有注释?
我故意的(此处拒绝板砖和拖鞋之类的具有任何杀伤性的物品),嘿嘿
自己看懂了才算是有收获欢迎指出错误
- 感谢你赐予我前进的力量
赞赏者名单
因为你们的支持让我意识到写文章的价值🙏
本文是原创文章,采用 CC BY-NC-ND 4.0 协议,完整转载请注明来自 Salted Fish
评论
隐私政策
你无需删除空行,直接评论以获取最佳展示效果