使用C#实现阿拉伯数字到大写中文的转换_C#教程

 先记下来,以备后用!

  /// <summary>
  /// 金额转为大写金额
  /// </summary>
  public class MoneyConvertChinese
  {
    /// <summary>
    /// 金额转为大写金额
    /// </summary>
    /// <param name="LowerMoney"></param>
    /// <returns></returns>
    public string MoneyToChinese(string LowerMoney)
    {
      string functionReturnValue = null;
      bool IsNegative = false; // 是否是负数
      if (LowerMoney.Trim().Substring(0, 1) == "-")
      {
        // 是负数则先转为正数
        LowerMoney = LowerMoney.Trim().Remove(0, 1);
        IsNegative = true;
      }
      string strLower = null;
      string strUpart = null;
      string strUpper = null;
      int iTemp = 0;
      // 保留两位小数 123.489→123.49  123.4→123.4
      LowerMoney = Math.Round(double.Parse(LowerMoney), 2).ToString();
      if (LowerMoney.IndexOf(".") > 0)
      {
        if (LowerMoney.IndexOf(".") == LowerMoney.Length - 2)
        {
          LowerMoney = LowerMoney + "0";
        }
      }
      else
      {
        LowerMoney = LowerMoney + ".00";
      }
      strLower = LowerMoney;
      iTemp = 1;
      strUpper = "";
      while (iTemp <= strLower.Length)
      {
        switch (strLower.Substring(strLower.Length - iTemp, 1))
        {
          case ".":
            strUpart = "圆";
            break;
          case "0":
            strUpart = "零";
            break;
          case "1":
            strUpart = "壹";
            break;
          case "2":
            strUpart = "贰";
            break;
          case "3":
            strUpart = "叁";
            break;
          case "4":
            strUpart = "肆";
            break;
          case "5":
            strUpart = "伍";
            break;
          case "6":
            strUpart = "陆";
            break;
          case "7":
            strUpart = "柒";
            break;
          case "8":
            strUpart = "捌";
            break;
          case "9":
            strUpart = "玖";
            break;
        }

        switch (iTemp)
        {
          case 1:
            strUpart = strUpart + "分";
            break;
          case 2:
            strUpart = strUpart + "角";
            break;
          case 3:
            strUpart = strUpart + "";
            break;
          case 4:
            strUpart = strUpart + "";
            break;
          case 5:
            strUpart = strUpart + "拾";
            break;
          case 6:
            strUpart = strUpart + "佰";
            break;
          case 7:
            strUpart = strUpart + "仟";
            break;
          case 8:
            strUpart = strUpart + "万";
            break;
          case 9:
            strUpart = strUpart + "拾";
            break;
          case 10:
            strUpart = strUpart + "佰";
            break;
          case 11:
            strUpart = strUpart + "仟";
            break;
          case 12:
            strUpart = strUpart + "亿";
            break;
          case 13:
            strUpart = strUpart + "拾";
            break;
          case 14:
            strUpart = strUpart + "佰";
            break;
          case 15:
            strUpart = strUpart + "仟";
            break;
          case 16:
            strUpart = strUpart + "万";
            break;
          default:
            strUpart = strUpart + "";
            break;
        }

        strUpper = strUpart + strUpper;
        iTemp = iTemp + 1;
      }

      strUpper = strUpper.Replace("零拾", "零");
      strUpper = strUpper.Replace("零佰", "零");
      strUpper = strUpper.Replace("零仟", "零");
      strUpper = strUpper.Replace("零零零", "零");
      strUpper = strUpper.Replace("零零", "零");
      strUpper = strUpper.Replace("零角零分", "整");
      strUpper = strUpper.Replace("零分", "整");
      strUpper = strUpper.Replace("零角", "零");
      strUpper = strUpper.Replace("零亿零万零圆", "亿圆");
      strUpper = strUpper.Replace("亿零万零圆", "亿圆");
      strUpper = strUpper.Replace("零亿零万", "亿");
      strUpper = strUpper.Replace("零万零圆", "万圆");
      strUpper = strUpper.Replace("零亿", "亿");
      strUpper = strUpper.Replace("零万", "万");
      strUpper = strUpper.Replace("零圆", "圆");
      strUpper = strUpper.Replace("零零", "零");

      // 对壹圆以下的金额的处理
      if (strUpper.Substring(0, 1) == "圆")
      {
        strUpper = strUpper.Substring(1, strUpper.Length - 1);
      }
      if (strUpper.Substring(0, 1) == "零")
      {
        strUpper = strUpper.Substring(1, strUpper.Length - 1);
      }
      if (strUpper.Substring(0, 1) == "角")
      {
        strUpper = strUpper.Substring(1, strUpper.Length - 1);
      }
      if (strUpper.Substring(0, 1) == "分")
      {
        strUpper = strUpper.Substring(1, strUpper.Length - 1);
      }
      if (strUpper.Substring(0, 1) == "整")
      {
        strUpper = "零圆整";
      }
      functionReturnValue = strUpper;

      if (IsNegative == true)
      {
        return "负" + functionReturnValue;
      }
      else
      {
        return functionReturnValue;
      }
    }
  }

测试代码:

    static void Main(string[] args)
    {
      Console.Write("请输入要转成大写的数字:");
      string str = Console.ReadLine();
      Console.WriteLine("大写:" + new MoneyConvertChinese().MoneyToChinese(str));
      Console.ReadLine();
    }

测试结果:

下面是其它网友的补充:

using System; 

namespace ConsoleApp
{
/// <summary>
/// 本类实现阿拉伯数字到大写中文的转换
/// 该类没有对非法数字进行判别
/// 请调用NumToChn方法
/// </summary>
public class NumFormat
{
 public NumFormat()
 {
 //
 // TODO: 在此处添加构造函数逻辑
 //
 } 

 // 转换数字
 private char ToNum(char x)
 {
 string strChnNames="零一二三四五六七八九";
 string strNumNames="0123456789";
 return strChnNames[strNumNames.IndexOf(x)];
 } 

 // 转换万以下整数
 private string ChangeInt(string x)
 {
 string[] strArrayLevelNames=new string[4] {"","十","百","千"};
 string ret = "";
 int i;
 for (i=x.Length-1;i>=0;i--)
 if (x[i] == '0')
  ret = ToNum(x[i]) + ret;
 else
  ret = ToNum(x[i]) + strArrayLevelNames[x.Length-1-i] + ret;
 while ((i=ret.IndexOf("零零"))!=-1)
 ret=ret.Remove(i, 1);
 if (ret[ret.Length-1]=='零' && ret.Length>1)
 ret=ret.Remove(ret.Length-1,1);
 if (ret.Length>=2 && ret.Substring(0,2)=="一十")
 ret=ret.Remove(0,1);
 return ret;
 } 

 // 转换整数
 private string ToInt(string x)
 {
 int len = x.Length;
 string ret,temp;
 if (len<=4)
 ret = ChangeInt(x);
 else if (len<=8)
 {
 ret = ChangeInt(x.Substring(0,len-4)) + "万";
 temp = ChangeInt(x.Substring(len-4,4));
 if (temp.IndexOf("千")==-1 && temp!="")
  ret += "零" + temp;
 else
  ret += temp;
 }
 else
 {
 ret=ChangeInt(x.Substring(0,len-8)) + "亿";
 temp=ChangeInt(x.Substring(len-8,4));
 if (temp.IndexOf("千")==-1 && temp!="")
  ret += "零" + temp;
 else
  ret += temp;
 ret += "万";
 temp = ChangeInt(x.Substring(len-4,4));
 if (temp.IndexOf("千")==-1 && temp!="")
  ret += "零" + temp;
 else
  ret += temp;
 }
 int i;
 if ((i=ret.IndexOf("零万"))!=-1)
 ret = ret.Remove(i+1,1);
 while ((i=ret.IndexOf("零零"))!=-1)
 ret = ret.Remove(i,1);
 if (ret[ret.Length-1]=='零' && ret.Length>1)
 ret = ret.Remove(ret.Length-1,1);
 return ret;
 } 

 private string ToDecimal(string x)
 {
 string ret="";
 for (int i=0;i<x.Length;i++)
 ret += ToNum(x[i]);
 return ret;
 } 

 public string NumToChn(string x)
 {
 if (x.Length==0)
 return "";
 string ret="";
 if (x[0]=='-')
 {
 ret="负";
 x=x.Remove(0,1);
 }
 if (x[0].ToString()==".")
 x="0"+x;
 if (x[x.Length-1].ToString()==".")
 x=x.Remove(x.Length-1,1);
 if (x.IndexOf(".")>-1)
 ret += ToInt(x.Substring(0,x.IndexOf(".")))+"点"+ToDecimal(x.Substring(x.IndexOf(".")+1));
 else
 ret += ToInt(x);
 return ret;
 }
}
}

测试工程

using System; 

namespace ConsoleApp
{
class MainClass
{
 static void Main(string[] args)
 {
 /*
 System.Console.WriteLine("Hello, The World!"); 

 System.Console.WriteLine("My Love!"); 

 ClassTest ct = new ClassTest();
   System.Console.WriteLine(ct.Get_Str());
 */ 

 /*
 // 重载运算符
   MyVector v1 = new MyVector(5, 12);
 MyVector v2 = new MyVector(4, 3);
 MyVector v3 = new MyVector();
 v3 = v1 + v2;
 System.Console.WriteLine("{0}测试一下", v3.Length);
 */ 

 // 转换成大写数字
 NumFormat nf = new NumFormat();
 string x;
 while (true)
 {
 Console.Write("X=");
 x = Console.ReadLine();
 if (x == "") break;
 Console.WriteLine("{0}={1}", x, nf.NumToChn(x));
 }
 }
}
} 

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索数字
, 阿拉伯
大写中文
c chart控件使用、c 定时器的使用、c 获取cpu使用率、c 线程使用、dev c 使用教程,以便于您获取更多的相关知识。

时间: 2024-07-29 00:36:21

使用C#实现阿拉伯数字到大写中文的转换_C#教程的相关文章

阿拉伯数字转大写中文_财务常用sql存储过程_MsSql

例:输入12345,程序给出:壹万贰仟叁佰肆拾伍 例:输入10023040,程序给出:壹仟另贰万叁仟另肆拾 解决方案之一(在SqlServer2000中测试通过): CREATE FUNCTION fun_cgnum (@num INT) RETURNS VARCHAR(100) AS BEGIN DECLARE @temp INT,@res INT,@i TINYINT DECLARE @str VARCHAR(100),@no VARCHAR(20),@unit VARCHAR(16) SE

阿拉伯数字转大写中文_财务常用sql存储过程

例:输入12345,程序给出:壹万贰仟叁佰肆拾伍 例:输入10023040,程序给出:壹仟另贰万叁仟另肆拾 解决方案之一(在SqlServer2000中测试通过): CREATE FUNCTION fun_cgnum (@num INT) RETURNS VARCHAR(100) AS BEGIN DECLARE @temp INT,@res INT,@i TINYINT DECLARE @str VARCHAR(100),@no VARCHAR(20),@unit VARCHAR(16) SE

请问如何替换字符串中大写中文数字为阿拉伯数字?

问题描述 我有几个字符串,如 我有十块钱,你有二十三块钱,他有二元钱.我想转换成 "我有10块钱,你有23块钱,他有2元钱.",请问如何转换,也就是如何把字符串中大写中文数字转换成阿拉伯数字.大写中文数字可限制在一到九百九十九之间.谢谢! 解决方案 package test;import java.text.MessageFormat;import java.util.ArrayList;import java.util.HashMap;import java.util.LinkedH

Word文档快速输入大写中文数字的教程

  在Word文档中输入一大串大写中文数字(如壹拾贰万零捌佰伍拾)比较麻烦,实际上可以通过输入阿拉伯数字转化为大写中文数字的方法进行输入,方法如下: 第一步:编辑文档,需要输入大写数字时. 第二步:单击"插入"选项卡. 第三步:在"插入"选项卡中选择"数字"点击,弹出"数字"对话框. 第四步:在"数字"对话框中"数字"下框中输入小字数字. 第五步:接着在在"数字"对话

Java中实现数字金额到中文大写字符的转换!!

最近用到了数值转成大写人民币的功能,在网上找了一下只有C++版的,好容易找到一个Java版的竟然收费!!没办法就自己弄一个出来,想必用到该功能的人肯定少,就拿出来与大家共享!! /**  * <p>Title: money</p>  * <p>Description:   *   *该类是把阿拉伯数字转换成中文大写的类.根据王大庆兄的C++程序稍做修改而成,后面附有王大庆兄的C++  *   *程序,如果对所附的C++程序有什么问题请与王大庆兄联系email: wang

JavaScript将数字转换成大写中文的方法

 这篇文章主要介绍了JavaScript将数字转换成大写中文的方法,涉及javascript字符串及匹配的技巧,具有一定参考借鉴价值,需要的朋友可以参考下     本文实例讲述了JavaScript将数字转换成大写中文的方法.分享给大家供大家参考.具体实现方法如下: ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 function intToChinese ( str ) { str

JavaScript将数字转换成大写中文的方法_javascript技巧

本文实例讲述了JavaScript将数字转换成大写中文的方法.分享给大家供大家参考.具体实现方法如下: function intToChinese ( str ) { str = str+''; var len = str.length-1; var idxs = ['','十','百','千','万','十','百','千','亿','十','百','千','万','十','百','千','亿']; var num = ['零','壹','贰','叁','肆','伍','陆','柒','捌',

asp 将中文自动转换成拼音

<% '************************************************** '函数名:ChToEng '作  用:将中文自动转换成拼音 '参  数:ZH_str-----要转换的中文 '返回值:转换后的拼音 '************************************************** Dim ZH_d,ZH_e,ZH_a,ZH_b,ZH_i,ZH_Type ZH_Type=1   '//0-全小写 1-首字母大写  Set ZH_d =

把中文字符转换成Utf8编码

编码|中文|转换 //--------把中文字符转换成Utf8编码------------------------// function EncodeUtf8(s1)  {      var s = escape(s1);      var sa = s.split("%");      var retV ="";      if(sa[0] != "")      {         retV = sa[0];      }      for(