當前位置:編程學習大全網 - 編程語言 - 請教C#編程正則表達式如何將漢語數字轉換成阿拉伯數字?謝謝。

請教C#編程正則表達式如何將漢語數字轉換成阿拉伯數字?謝謝。

正則表達式實現起來還是挺難的……

可以參考壹下這個:

public?double?DecodeMoneyCn(string?AText)

{

AText?=?AText.Replace("億億",?"兆");

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?==?6)?i?=?12;

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?button1_Click(object?sender,?EventArgs?e)

{

string[]?vTestText?=?{?

"十二點五六",?

"壹億零壹萬零五",?

"四萬萬",?

"九十八億七千六百五十四萬三千二百壹十",

"五元壹角四分",?"壹佰元整",

"三千五百萬",

"九塊二毛"};

foreach?(string?vText?in?vTestText)

{

Console.WriteLine("DecodeMoneyCn(\"{0}\")={1}",?vText,?

DecodeMoneyCn(vText));

}

//輸出

//DecodeMoneyCn("十二點五六")=2.56

//DecodeMoneyCn("壹億零壹萬零五")=100010005

//DecodeMoneyCn("四萬萬")=400000000

//DecodeMoneyCn("九十八億七千六百五十四萬三千二百壹十")=9876543210

//DecodeMoneyCn("五元壹角四分")=5.14

//DecodeMoneyCn("壹佰元整")=100

//DecodeMoneyCn("三千五百萬")=35000000

//DecodeMoneyCn("九塊二毛")=9.2

//DecodeMoneyCn("壹兆")=1000000000000

}

  • 上一篇:嶽陽工業機器人基本編程
  • 下一篇:關於川人未曾負國的說說
  • copyright 2024編程學習大全網