场景例子:
你好78乘以896=69888呀
转为为大写后变为:你好七十八乘以八百九十六等于六万九千八百八十八呀
public static void main(String[] args) {
System.out.println("toChinese:"+toChinese("1000"));
String aa="你好78乘以896=69888呀";
String numberToChinese_bak = numberToChinese(aa);
System.out.println("numberToChinese_bak"+numberToChinese_bak);
System.out.println("markToChinese:"+markToChinese(numberToChinese_bak));
// System.out.println("toChinese2:"+numberToChinese("你好1230456"));
// System.out.println(numberToChinese("1*1等于几"));
}
private static String toChinese(String str) {
String[] s1 = { "零", "一", "二", "三", "四", "五", "六", "七", "八", "九" };
String[] s2 = { "十", "百", "千", "万", "十", "百", "千", "亿", "十", "百", "千" };
String result = "";
int n = str.length();
for (int i = 0; i < n; i++) {
int num = str.charAt(i) - '0';
if (i != n - 1 && num != 0) {
result += s1[num] + s2[n - 2 - i];
} else {
result += s1[num];
}
}
return result;
}
public static String numbertoChineseNumber(String str) {
String[] s2 = {"零", "一", "二", "三", "四", "五", "六", "七", "八", "九"};
StringBuffer sb=new StringBuffer();
for (char c : str.toCharArray()) {
sb.append(s2[Integer.parseInt(String.valueOf(c))]);
}
return sb.toString();
}
public static String numberToChinese_bak(String str) {
String[] s2 = {"零", "一", "二", "三", "四", "五", "六", "七", "八", "九"};
StringBuffer sb=new StringBuffer();
char[] charArray = str.toCharArray();
for (int i = 0; i < charArray.length; i++) {
char c = charArray[i];
if (c>='0' && c<='9') {
sb.append(s2[Integer.parseInt(String.valueOf(c))]);
}else{
sb.append(charArray[i]);
}
}
return sb.toString();
}
public static String numberToChinese(String str) {
String[] s2 = {"零", "一", "二", "三", "四", "五", "六", "七", "八", "九"};
StringBuffer sb=new StringBuffer();
StringBuffer numStr=new StringBuffer("");
char[] charArray = str.toCharArray();
char mark='@';
for (int i = 0; i < charArray.length; i++) {
char c = charArray[i];
if (c>='0' && c<='9') {
if (i==0) {
numStr.append(String.valueOf(c));
}else{
char cPre=charArray[i-1];
if (cPre>='0' && cPre<='9') {
}else{
numStr.append(c);
}
}
if (i==charArray.length-1) {
sb.append(toChinese(numStr.toString()));
}else{
char cNext = charArray[i+1];
if (cNext>='0' && cNext<='9'){
numStr.append(cNext);
}else{
sb.append(toChinese(numStr.toString()));
numStr=new StringBuffer("");
}
}
}else{
sb.append(charArray[i]);
numStr=new StringBuffer("");
}
}
return sb.toString();
}
public static String markToChinese(String str) {
StringBuffer sb=new StringBuffer();
char[] charArray = str.toCharArray();
for (int i = 0; i < charArray.length; i++) {
char c = charArray[i];
if (c=='+') {
sb.append("加");
}else if(c=='-'){
sb.append("减");
}
else if(c=='×'){
sb.append("乘");
}
else if(c=='*'){
sb.append("乘");
}
else if(c=='/'){
sb.append("除");
}else if(c=='÷'){
sb.append("除");
}
else if(c=='='){
sb.append("等于");
}
else{
sb.append(charArray[i]);
}
}
return sb.toString();
}