对上篇文章优化,更简单易懂
1,实现思路
因为汉语读法的特殊性把数字通过四位进行分割,因为千、百、十是重复使用的(壹百,壹百万,壹佰亿)。千、百、十我们看做四位中的小单位。亿和万看做四位结束后的大单位。分为两个单位数组。如下:
//四位间隔的大单位
String BigUnit[] = {"亿", "万", "元"};
//四位之间的小单位
String smallUnit[] = {"千", "百", "十", ""};
//通过map来进行大小写转换。
String[] upNum = {"零","壹","贰","叁","肆","伍","陆","柒","捌","玖"};
通过两层循环,外层控制大单位在数组中索引和按照四位分割的字符串截取。内层循环进行对四位之间的处理(包括汉字转换和单位拼接),如下:
for (int i = 0; i < length; i++) {
//1.取大单位
//2.字符串分割
//3.处理四位之间数据 substrNum:分割后的字符串
for (int j = 0; j < substrNum.length(); j++) {
//汉字转换和单位拼接 TODO
}
//重置开始索引。
indexS = indexE;
}
2.实现
有了思路,下面对具体的汉字转换和单位拼接进行实现。因为要控制0在不同位置的记录所以,要考虑全面。最后实现如下:
public static String dealMoney(String inputStr) {
StringBuilder resultStrBuld = new StringBuilder();
String[] split = in