本帖最后由 dtx613 于 2010-12-30 01:05:07 编辑

解决方案 »

  1.   

    public   static   string   CmycurD(decimal   num)   
    {   
    string   str1   =   "零壹贰叁肆伍陆柒捌玖 ";                         //0-9所对应的汉字   
    string   str2   =   "万仟佰拾亿仟佰拾万仟佰拾元角分 ";   //数字位所对应的汉字   
    string   str3   =   " ";         //从原num值中取出的值   
    string   str4   =   " ";         //数字的字符串形式   
    string   str5   =   " ";     //人民币大写金额形式   
    int   i;         //循环变量   
    int   j;         //num的值乘以100的字符串长度   
    string   ch1   =   " ";         //数字的汉语读法   
    string   ch2   =   " ";         //数字位的汉字读法   
    int   nzero   =   0;     //用来计算连续的零值是几个   
    int   temp;                         //从原num值中取出的值   
      
    num   =   Math.Round(Math.Abs(num),2);         //将num取绝对值并四舍五入取2位小数   
    str4   =   ((long)(num*100)).ToString();                 //将num乘100并转换成字符串形式   
    j   =   str4.Length;             //找出最高位   
    if   (j   >   15){return   "溢出 ";}   
    str2   =   str2.Substring(15-j);       //取出对应位数的str2的值。如:200.55,j为5所以str2=佰拾元角分   
                                  
    //循环取出每一位需要转换的值   
    for(i=0;i <j;i++)   
    {   
    str3   =   str4.Substring(i,1);                     //取出需转换的某一位的值   
    temp   =   Convert.ToInt32(str3);             //转换为数字   
    if   (i   !=   (j-3)   &&   i   !=   (j-7)   &&   i   !=   (j-11)   &&   i   !=   (j-15))   
    {           
    //当所取位数不为元、万、亿、万亿上的数字时   
    if   (str3   ==   "0 ")   
    {   
    ch1   =   " ";   
    ch2   =   " ";   
    nzero   =   nzero   +   1;   
    }   
    else   
    {   
    if(str3   !=   "0 "   &&   nzero   !=   0)   
    {   
    ch1   =   "零 "   +   str1.Substring(temp*1,1);   
    ch2   =   str2.Substring(i,1);   
    nzero   =   0;   
    }   
    else   
    {   
    ch1   =   str1.Substring(temp*1,1);   
    ch2   =   str2.Substring(i,1);   
    nzero   =   0;   
    }   
    }   
    }   
    else   
    {     
    //该位是万亿,亿,万,元位等关键位   
    if   (str3   !=   "0 "   &&   nzero   !=   0)   
    {   
    ch1   =   "零 "   +   str1.Substring(temp*1,1);   
    ch2   =   str2.Substring(i,1);   
    nzero   =   0;   
    }   
    else   
    {   
    if   (str3   !=   "0 "   &&   nzero   ==   0)   
    {   
    ch1   =   str1.Substring(temp*1,1);   
    ch2   =   str2.Substring(i,1);   
    nzero   =   0;   
    }   
    else   
    {   
    if   (str3   ==   "0 "   &&   nzero   > =   3)   
    {   
    ch1   =   " ";   
    ch2   =   " ";   
    nzero   =   nzero   +   1;   
    }   
    else   
    {   
    if   (j   > =   11)   
    {   
    ch1   =   " ";   
    nzero   =   nzero   +   1;   
    }   
    else   
    {   
    ch1   =   " ";   
    ch2   =   str2.Substring(i,1);   
    nzero   =   nzero   +   1;   
    }   
    }   
    }   
    }   
    }   
    if   (i   ==   (j-11)   ||   i   ==   (j-3))   
    {     
    //如果该位是亿位或元位,则必须写上   
    ch2   =   str2.Substring(i,1);   
    }   
    str5   =   str5   +   ch1   +   ch2;   
              
    if   (i   ==   j-1   &&   str3   ==   "0 "   )   
    {         
    //最后一位(分)为0时,加上“整”   
    str5   =   str5   +   '整 ';   
    }   
    }   
    if   (num   ==   0)   
    {   
    str5   =   "零元整 ";   
    }   
    return   str5;   
    }   
    public   static   string   CmycurD(string   numstr)   
    {   
    try   
    {   
    decimal   num   =   Convert.ToDecimal(numstr);   
    return   CmycurD(num);   
    }   
    catch   
    {   
    return   "非数字形式! ";   
    }   
    }
      

  2.   

    话说有个微软出的组件 你去找找吧。
    Microsoft Visual Studio International Pack
    Microsoft Visual Studio International Feature Pack 2.0
    好像这两个 里面就有。。
      

  3.   

    void Main()
    {
     
      Console.WriteLine("{0,14:N2}: {1}", 123456789.32, ConvertToChinese(123456789.32));

    }
     static string ConvertToChinese(double x)
      {
    string s = x.ToString("#L#E#D#C#K#E#D#C#J#E#D#C#I#E#D#C#H#E#D#C#G#E#D#C#F#E#D#C#.0B0A");
    string d = Regex.Replace(s, @"((?<=-|^)[^1-9]*)|((?'z'0)[0A-E]*((?=[1-9])|(?'-z'(?=[F-L\.]|$))))|((?'b'[F-L])(?'z'0)[0A-L]*((?=[1-9])|(?'-z'(?=[\.]|$))))", "${b}${z}");
    return Regex.Replace(d, ".", delegate(Match m) { return "负元空零壹贰叁肆伍陆柒捌玖空空空空空空空分角拾佰仟萬億兆京垓秭穰"[m.Value[0] - '-'].ToString(); });
      }
      
    //  123,456,789.32: 壹億贰仟叁佰肆拾伍萬陆仟柒佰捌拾玖元叁角贰分
      

  4.   


    错误
    1 当前上下文中不存在名称“Regex”
    2 当前上下文中不存在名称“Regex”
    3 找不到类型或命名空间名称“Match”(是否缺少 using 指令或程序集引用?)我调试发现了这3个错误
      

  5.   

    using System.Text.RegularExpressions;错误提示已经告诉你很清楚原因了
    为何不自己试一下?
      

  6.   

    还不会?创建个Console工程,
    在program.cs头上追加using System.Text.RegularExpressions;
    拷贝#4楼代码替换原来的Main方法按下[F5]