大写金额转换成小写

Q:如何将大写金额转换成小写?

A:简单点,格式比较严格

private float getMoney( string strBig)
... {
string strExp = "" ;
string []arrBig = new string [] ... { " " , "" , " " , " +0 " , " " , " +1 " , " " , " +2 " , " " , " +3 " , " " , " +4 " , " " , " +5 " , " " , " +6 " , " " , " +7 " , " " , " +8 " , " " , " +9 " , " " , " *0.01 " , " " , " *0.1 " , " " , " *1 " , " " , " *10.00 " , " " , " *100.00 " , " " , " *1000.00 " , " " , " *10000.00 " , " 亿 " , " *100000000.00 " } ;
for ( int i = 0 ;i < strBig.Length;i ++ )
... {
for ( int j = 0 ;j < arrBig.Length - 1 ;j += 2 )
... {
if (arrBig[j] == strBig[i].ToString())
... {
strExp
+= arrBig[j + 1 ].ToString();
continue ;
}

}

}


object ret = new DataTable().Compute(strExp, "" );
return float .Parse(ret.ToString());
// Console.WriteLine(getMoney("玖仟零贰拾壹元陆角肆分"));
// Console.WriteLine(getMoney("玖仟万亿零贰拾壹元陆角肆分"));
}

伴水兄的这个较狠

public double DecodeMoneyCn( string AText)
... {
AText
= AText.Replace( " 万万 " , " 亿 " );
AText
= AText.Replace( " " , " " );
AText
= AText.Replace( " " , " " );
AText
= AText.Replace( " " , " " );
double vResult = 0 ;
double vNumber = 0 ; // 当前数字
double vTemp = 0 ;
int vDecimal = 0 ; // 是否出现小数点
foreach ( char vChar in AText)
... {
int i = " 零一二三四五六七八九 " .IndexOf(vChar);
if (i < 0 )i = " 零幺两三四五六七八九 " .IndexOf(vChar);
if (i < 0 )i = " 零壹贰叁肆伍陆柒捌玖 " .IndexOf(vChar);
if (i > 0 )
... {
vNumber
= i;
if (vDecimal > 0 )
... {
vResult
+= vNumber * Math.Pow( 10 , - vDecimal);
vDecimal
++ ;
vNumber
= 0 ;
}

}

else
... {
i
= " 元十百千万亿 " .IndexOf(vChar);
if (i < 0 )i = " 整拾佰仟万亿 " .IndexOf(vChar);
if (i == 5 )i = 8 ;
if (i > 0 )
... {
if (i >= 4 )
... {
vTemp
+= vNumber;
if (vTemp == 0 )vTemp = 1 ;
vResult
+= vTemp * Math.Pow( 10 ,i);
vTemp
= 0 ;
}

else vTemp += vNumber * Math.Pow( 10 ,i);
}

else
... {
i
= " 元角分 " .IndexOf(vChar);
if (i > 0 )
... {
vTemp
+= vNumber;
vResult
+= vTemp * Math.Pow( 10 , - i);
vTemp
= 0 ;
}

else if (i == 0 )
... {
vTemp
+= vNumber;
vResult
+= vTemp;
vDecimal
= 1 ;
vTemp
= 0 ;
}

}

vNumber
= 0 ;
}

}

return vResult + vTemp + vNumber;
}


private void button2_Click( object sender,EventArgse)
... {
string []vTestText = ... {
" 十二点五六 " ,
" 一亿零一万零五 " ,
" 四万万 " ,
" 九十八亿七千六百五十四万三千二百一十 " ,
" 五元一角四分 " , " 壹佰元整 " ,
" 三千五百万 " ,
" 九块二毛 " }
;
foreach ( string vText in vTestText)
... {
Console.WriteLine(
" DecodeMoneyCn("{0}")={1} " ,vText,
DecodeMoneyCn(vText));
}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值