1.这里解决的是千万级别的数字,解决思路 个 十 百 千 万 十万 百万 千万
1.把零去掉
2.按照万进行切分,分成两个部分,进行分别求解,具体的解决方案如下
import java.util.HashMap;
import java.util.Map;
public static void main(String[] args) {
Map<String, Integer> unitMap = new HashMap<>();
unitMap.put("十", 10);
unitMap.put("百", 100);
unitMap.put("千", 1000);
Map<String, Integer> digitMap = new HashMap<>();
digitMap.put("一", 1);
digitMap.put("二", 2);
digitMap.put("三", 3);
digitMap.put("四", 4);
digitMap.put("五", 5);
digitMap.put("六", 6);
digitMap.put("七", 7);
digitMap.put("八", 8);
digitMap.put("九", 9);
String digitString="七千二百万零三十五";
//String digitString = "二百零四万";
// 1.把零给去掉
StringBuffer r1 = new StringBuffer();
for (int i = 0; i < digitString.length(); i++) {
if (digitString.charAt(i) != '零') {
r1.append(digitString.charAt(i));
}
}
// 将其分为两个部分 万前,和万后
digitString = r1.toString();
String wanH = null;
String wanT = null;
if (digitString.contains("万")) {
String[] result = digitString.split("万");
if (result.length == 2) {
wanH = digitString.split("万")[0];
wanT = digitString.split("万")[1];
} else {
wanH = digitString.split("万")[0];
}
} else {
wanT = digitString.split("万")[0];
}
long resultWan = 0;
resultWan = getDigit(unitMap, digitMap, wanH);
resultWan = resultWan * 10000;
long resultT = getDigit(unitMap, digitMap, wanT);
long result = 0;
result = resultT + resultWan;
System.out.println(result);
}
private static long getDigit(Map<String, Integer> unitMap,
Map<String, Integer> digitMap, String wan) {
long resultWan = 0;
if (wan != null) {
for (int i = 0; i < wan.length(); i++) {
if (unitMap.containsKey(wan.charAt(i) + "")) {
int r = digitMap.get(wan.charAt(i - 1) + "");
resultWan += r * unitMap.get(wan.charAt(i) + "");
}
}
if (!unitMap.containsKey(wan.charAt(wan.length() - 1) + "")) {
resultWan += digitMap.get(wan.charAt(wan.length() - 1) + "");
}
}
return resultWan;
}
}