C#中把货币、日期转换成中文大写
生活随笔
收集整理的這篇文章主要介紹了
C#中把货币、日期转换成中文大写
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
日期轉換代碼如下:
/**////?<summary>
///?日期轉換為中文大寫
///?</summary>
public?class?UpperConvert
{
????public?UpperConvert()
????{
????????//
????????//?TODO:?在此處添加構造函數邏輯
????????//
????}
????//把數字轉換為大寫
????????public?string?numtoUpper(int?num)
????????{
????????????String?str=num.ToString();
????????????string?rstr?=?"";
????????????int?n;
????????????for?(int?i?=?0;?i?<?str.Length;?i++)?
????????????{
????????????????n?=Convert.ToInt16(str[i].ToString());//char轉數字,轉換為字符串,再轉數字
????????????????switch?(n)?
????????????????{
????????????????????case?0:rstr=rstr+"〇";break;
????????????????????case?1:rstr=rstr+"一";break;
????????????????????case?2:rstr=rstr+"二";break;
????????????????????case?3:rstr=rstr+"三";break;
????????????????????case?4:rstr=rstr+"四";break;
????????????????????case?5:rstr=rstr+"五";break;
????????????????????case?6:rstr=rstr+"六";break;
????????????????????case?7:rstr=rstr+"七";break;
????????????????????case?8:rstr=rstr+"八";break;
????????????????????default:rstr=rstr+"九";break;
????????????????????????
????????????????}
????????????}
????????????return?rstr;
????????}
????????//月轉化為大寫
????????public?string?monthtoUpper(int?month)
????????{
????????????if?(month?<?10)
????????????{
????????????????return?numtoUpper(month);
????????????}
????????????else
????????????????if?(month?==?10)?{?return?"十";?}
????????????????else
????????????????{
????????????????????return?"十"?+?numtoUpper(month?-?10);
????????????????}
????????}
????????//日轉化為大寫
????????public?string?daytoUpper(int?day)
????????{
????????????if?(day?<?20)
????????????{
????????????????return?monthtoUpper(day);
????????????}
????????????else
????????????{
????????????????String?str?=?day.ToString();
????????????????if?(str[1]?==?'0')
????????????????{
????????????????????return?numtoUpper(Convert.ToInt16(str[0].ToString()))+"十"?;
?
????????????????}
???????????????
????????????????else
????????????????{
????????????????????return?numtoUpper(Convert.ToInt16(str[0].ToString()))?+?"十"?
????????????????????????+?numtoUpper(Convert.ToInt16(str[1].ToString()));?
????????????????}
????????????}
????????}
????????//日期轉換為大寫
????????public?string??dateToUpper(System.DateTime?date)
????????{
????????????int?year?=?date.Year;
????????????int?month?=?date.Month;
????????????int?day?=?date.Day;
????????????return?numtoUpper(year)?+?"年"?+?monthtoUpper(month)?+?"月"?+?daytoUpper(day)?+?"日";
????????}
}
? 貨幣轉換代碼:
/**////?<summary>
///?MoneyConvert?的摘要說明
///?</summary>
public?class?MoneyConvert
{
????public?MoneyConvert()
????{
????????//
????????//?TODO:?在此處添加構造函數邏輯
????????//
????}
????public?string?GetUpper(string?numstr)
????{
????????try
????????{
????????????decimal?num?=?Convert.ToDecimal(numstr);
????????????return?GetUpper(num);
????????}
????????catch
????????{
????????????return?"非數字形式!";
????????}
????}
????public?string?GetUpper(int?numint)
????{
????????try
????????{
????????????decimal?num?=?Convert.ToDecimal(numint);
????????????return?GetUpper(num);
????????}
????????catch
????????{
????????????return?"非數字形式!";
????????}
????}
????/**//**/
????/**////?<summary>?
????///?轉換人民幣大小金額?
????///?</summary>?
????///?<param?name="num">金額</param>?
????///?<returns>返回大寫形式</returns>?
????public?string?GetUpper(decimal?num)
????{
????????string?strUpperMum?=?"零壹貳叁肆伍陸柒捌玖";????????????//0-9所對應的漢字?
????????string?strNumUnit?=?"萬仟佰拾億仟佰拾萬仟佰拾元角分";?//數字位所對應的漢字?
????????string?strOfNum?=?"";????//從原num值中取出的值?
????????string?strNum?=?"";????//數字的字符串形式?
????????string?strReturnUpper?=?"";??//人民幣大寫金額形式?
????????int?i;????//循環變量?
????????int?sumLength;????//num的值乘以100的字符串長度?
????????string?ch1?=?"";????//數字的漢語讀法?
????????string?ch2?=?"";????//數字位的漢字讀法?
????????int?nzero?=?0;??//用來計算連續的零值是幾個?
????????int?temp;????????????//從原num值中取出的值?
????????num?=?Math.Round(Math.Abs(num),?2);????//將num取絕對值并四舍五入取2位小數?
????????strNum?=?((long)(num?*?100)).ToString();????????//將num乘100并轉換成字符串形式?
????????sumLength?=?strNum.Length;??????//找出最高位?
????????if?(sumLength?>?15)?{?return?"溢出";?}
????????strNumUnit?=?strNumUnit.Substring(15?-?sumLength);???//取出對應位數的strNumUnit的值。如:200.55,sumLength為5所以strNumUnit=佰拾元角分?
????????//循環取出每一位需要轉換的值?
????????for?(i?=?0;?i?<?sumLength;?i++)
????????{
????????????strOfNum?=?strNum.Substring(i,?1);??????????//取出需轉換的某一位的值?
????????????temp?=?Convert.ToInt32(strOfNum);??????//轉換為數字?
????????????if?(i?!=?(sumLength?-?3)?&&?i?!=?(sumLength?-?7)?&&?i?!=?(sumLength?-?11)?&&?i?!=?(sumLength?-?15))
????????????{
????????????????//當所取位數不為元、萬、億、萬億上的數字時?
????????????????if?(strOfNum?==?"0")
????????????????{
????????????????????ch1?=?"";
????????????????????ch2?=?"";
????????????????????nzero?=?nzero?+?1;
????????????????}
????????????????else
????????????????{
????????????????????if?(strOfNum?!=?"0"?&&?nzero?!=?0)
????????????????????{
????????????????????????ch1?=?"零"?+?strUpperMum.Substring(temp?*?1,?1);
????????????????????????ch2?=?strNumUnit.Substring(i,?1);
????????????????????????nzero?=?0;
????????????????????}
????????????????????else
????????????????????{
????????????????????????ch1?=?strUpperMum.Substring(temp?*?1,?1);
????????????????????????ch2?=?strNumUnit.Substring(i,?1);
????????????????????????nzero?=?0;
????????????????????}
????????????????}
????????????}
????????????else
????????????{
????????????????//該位是萬億,億,萬,元位等關鍵位?
????????????????if?(strOfNum?!=?"0"?&&?nzero?!=?0)
????????????????{
????????????????????ch1?=?"零"?+?strUpperMum.Substring(temp?*?1,?1);
????????????????????ch2?=?strNumUnit.Substring(i,?1);
????????????????????nzero?=?0;
????????????????}
????????????????else
????????????????{
????????????????????if?(strOfNum?!=?"0"?&&?nzero?==?0)
????????????????????{
????????????????????????ch1?=?strUpperMum.Substring(temp?*?1,?1);
????????????????????????ch2?=?strNumUnit.Substring(i,?1);
????????????????????????nzero?=?0;
????????????????????}
????????????????????else
????????????????????{
????????????????????????if?(strOfNum?==?"0"?&&?nzero?>=?3)
????????????????????????{
????????????????????????????ch1?=?"";
????????????????????????????ch2?=?"";
????????????????????????????nzero?=?nzero?+?1;
????????????????????????}
????????????????????????else
????????????????????????{
????????????????????????????if?(sumLength?>=?11)
????????????????????????????{
????????????????????????????????ch1?=?"";
????????????????????????????????nzero?=?nzero?+?1;
????????????????????????????}
????????????????????????????else
????????????????????????????{
????????????????????????????????ch1?=?"";
????????????????????????????????ch2?=?strNumUnit.Substring(i,?1);
????????????????????????????????nzero?=?nzero?+?1;
????????????????????????????}
????????????????????????}
????????????????????}
????????????????}
????????????}
????????????if?(i?==?(sumLength?-?11)?||?i?==?(sumLength?-?3))
????????????{
????????????????//如果該位是億位或元位,則必須寫上?
????????????????ch2?=?strNumUnit.Substring(i,?1);
????????????}
????????????strReturnUpper?=?strReturnUpper?+?ch1?+?ch2;
????????????if?(i?==?sumLength?-?1?&&?strOfNum?==?"0")
????????????{
????????????????//最后一位(分)為0時,加上“整”?
????????????????strReturnUpper?=?strReturnUpper?+?'整';
????????????}
????????}
????????if?(num?==?0)
????????{
????????????strReturnUpper?=?"零元整";
????????}
????????return?strReturnUpper;
????}
}
/**////?<summary>
///?日期轉換為中文大寫
///?</summary>
public?class?UpperConvert
{
????public?UpperConvert()
????{
????????//
????????//?TODO:?在此處添加構造函數邏輯
????????//
????}
????//把數字轉換為大寫
????????public?string?numtoUpper(int?num)
????????{
????????????String?str=num.ToString();
????????????string?rstr?=?"";
????????????int?n;
????????????for?(int?i?=?0;?i?<?str.Length;?i++)?
????????????{
????????????????n?=Convert.ToInt16(str[i].ToString());//char轉數字,轉換為字符串,再轉數字
????????????????switch?(n)?
????????????????{
????????????????????case?0:rstr=rstr+"〇";break;
????????????????????case?1:rstr=rstr+"一";break;
????????????????????case?2:rstr=rstr+"二";break;
????????????????????case?3:rstr=rstr+"三";break;
????????????????????case?4:rstr=rstr+"四";break;
????????????????????case?5:rstr=rstr+"五";break;
????????????????????case?6:rstr=rstr+"六";break;
????????????????????case?7:rstr=rstr+"七";break;
????????????????????case?8:rstr=rstr+"八";break;
????????????????????default:rstr=rstr+"九";break;
????????????????????????
????????????????}
????????????}
????????????return?rstr;
????????}
????????//月轉化為大寫
????????public?string?monthtoUpper(int?month)
????????{
????????????if?(month?<?10)
????????????{
????????????????return?numtoUpper(month);
????????????}
????????????else
????????????????if?(month?==?10)?{?return?"十";?}
????????????????else
????????????????{
????????????????????return?"十"?+?numtoUpper(month?-?10);
????????????????}
????????}
????????//日轉化為大寫
????????public?string?daytoUpper(int?day)
????????{
????????????if?(day?<?20)
????????????{
????????????????return?monthtoUpper(day);
????????????}
????????????else
????????????{
????????????????String?str?=?day.ToString();
????????????????if?(str[1]?==?'0')
????????????????{
????????????????????return?numtoUpper(Convert.ToInt16(str[0].ToString()))+"十"?;
?
????????????????}
???????????????
????????????????else
????????????????{
????????????????????return?numtoUpper(Convert.ToInt16(str[0].ToString()))?+?"十"?
????????????????????????+?numtoUpper(Convert.ToInt16(str[1].ToString()));?
????????????????}
????????????}
????????}
????????//日期轉換為大寫
????????public?string??dateToUpper(System.DateTime?date)
????????{
????????????int?year?=?date.Year;
????????????int?month?=?date.Month;
????????????int?day?=?date.Day;
????????????return?numtoUpper(year)?+?"年"?+?monthtoUpper(month)?+?"月"?+?daytoUpper(day)?+?"日";
????????}
}
? 貨幣轉換代碼:
/**////?<summary>
///?MoneyConvert?的摘要說明
///?</summary>
public?class?MoneyConvert
{
????public?MoneyConvert()
????{
????????//
????????//?TODO:?在此處添加構造函數邏輯
????????//
????}
????public?string?GetUpper(string?numstr)
????{
????????try
????????{
????????????decimal?num?=?Convert.ToDecimal(numstr);
????????????return?GetUpper(num);
????????}
????????catch
????????{
????????????return?"非數字形式!";
????????}
????}
????public?string?GetUpper(int?numint)
????{
????????try
????????{
????????????decimal?num?=?Convert.ToDecimal(numint);
????????????return?GetUpper(num);
????????}
????????catch
????????{
????????????return?"非數字形式!";
????????}
????}
????/**//**/
????/**////?<summary>?
????///?轉換人民幣大小金額?
????///?</summary>?
????///?<param?name="num">金額</param>?
????///?<returns>返回大寫形式</returns>?
????public?string?GetUpper(decimal?num)
????{
????????string?strUpperMum?=?"零壹貳叁肆伍陸柒捌玖";????????????//0-9所對應的漢字?
????????string?strNumUnit?=?"萬仟佰拾億仟佰拾萬仟佰拾元角分";?//數字位所對應的漢字?
????????string?strOfNum?=?"";????//從原num值中取出的值?
????????string?strNum?=?"";????//數字的字符串形式?
????????string?strReturnUpper?=?"";??//人民幣大寫金額形式?
????????int?i;????//循環變量?
????????int?sumLength;????//num的值乘以100的字符串長度?
????????string?ch1?=?"";????//數字的漢語讀法?
????????string?ch2?=?"";????//數字位的漢字讀法?
????????int?nzero?=?0;??//用來計算連續的零值是幾個?
????????int?temp;????????????//從原num值中取出的值?
????????num?=?Math.Round(Math.Abs(num),?2);????//將num取絕對值并四舍五入取2位小數?
????????strNum?=?((long)(num?*?100)).ToString();????????//將num乘100并轉換成字符串形式?
????????sumLength?=?strNum.Length;??????//找出最高位?
????????if?(sumLength?>?15)?{?return?"溢出";?}
????????strNumUnit?=?strNumUnit.Substring(15?-?sumLength);???//取出對應位數的strNumUnit的值。如:200.55,sumLength為5所以strNumUnit=佰拾元角分?
????????//循環取出每一位需要轉換的值?
????????for?(i?=?0;?i?<?sumLength;?i++)
????????{
????????????strOfNum?=?strNum.Substring(i,?1);??????????//取出需轉換的某一位的值?
????????????temp?=?Convert.ToInt32(strOfNum);??????//轉換為數字?
????????????if?(i?!=?(sumLength?-?3)?&&?i?!=?(sumLength?-?7)?&&?i?!=?(sumLength?-?11)?&&?i?!=?(sumLength?-?15))
????????????{
????????????????//當所取位數不為元、萬、億、萬億上的數字時?
????????????????if?(strOfNum?==?"0")
????????????????{
????????????????????ch1?=?"";
????????????????????ch2?=?"";
????????????????????nzero?=?nzero?+?1;
????????????????}
????????????????else
????????????????{
????????????????????if?(strOfNum?!=?"0"?&&?nzero?!=?0)
????????????????????{
????????????????????????ch1?=?"零"?+?strUpperMum.Substring(temp?*?1,?1);
????????????????????????ch2?=?strNumUnit.Substring(i,?1);
????????????????????????nzero?=?0;
????????????????????}
????????????????????else
????????????????????{
????????????????????????ch1?=?strUpperMum.Substring(temp?*?1,?1);
????????????????????????ch2?=?strNumUnit.Substring(i,?1);
????????????????????????nzero?=?0;
????????????????????}
????????????????}
????????????}
????????????else
????????????{
????????????????//該位是萬億,億,萬,元位等關鍵位?
????????????????if?(strOfNum?!=?"0"?&&?nzero?!=?0)
????????????????{
????????????????????ch1?=?"零"?+?strUpperMum.Substring(temp?*?1,?1);
????????????????????ch2?=?strNumUnit.Substring(i,?1);
????????????????????nzero?=?0;
????????????????}
????????????????else
????????????????{
????????????????????if?(strOfNum?!=?"0"?&&?nzero?==?0)
????????????????????{
????????????????????????ch1?=?strUpperMum.Substring(temp?*?1,?1);
????????????????????????ch2?=?strNumUnit.Substring(i,?1);
????????????????????????nzero?=?0;
????????????????????}
????????????????????else
????????????????????{
????????????????????????if?(strOfNum?==?"0"?&&?nzero?>=?3)
????????????????????????{
????????????????????????????ch1?=?"";
????????????????????????????ch2?=?"";
????????????????????????????nzero?=?nzero?+?1;
????????????????????????}
????????????????????????else
????????????????????????{
????????????????????????????if?(sumLength?>=?11)
????????????????????????????{
????????????????????????????????ch1?=?"";
????????????????????????????????nzero?=?nzero?+?1;
????????????????????????????}
????????????????????????????else
????????????????????????????{
????????????????????????????????ch1?=?"";
????????????????????????????????ch2?=?strNumUnit.Substring(i,?1);
????????????????????????????????nzero?=?nzero?+?1;
????????????????????????????}
????????????????????????}
????????????????????}
????????????????}
????????????}
????????????if?(i?==?(sumLength?-?11)?||?i?==?(sumLength?-?3))
????????????{
????????????????//如果該位是億位或元位,則必須寫上?
????????????????ch2?=?strNumUnit.Substring(i,?1);
????????????}
????????????strReturnUpper?=?strReturnUpper?+?ch1?+?ch2;
????????????if?(i?==?sumLength?-?1?&&?strOfNum?==?"0")
????????????{
????????????????//最后一位(分)為0時,加上“整”?
????????????????strReturnUpper?=?strReturnUpper?+?'整';
????????????}
????????}
????????if?(num?==?0)
????????{
????????????strReturnUpper?=?"零元整";
????????}
????????return?strReturnUpper;
????}
}
轉載于:https://www.cnblogs.com/MaxWoods/archive/2008/03/12/1101963.html
總結
以上是生活随笔為你收集整理的C#中把货币、日期转换成中文大写的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 坦克轮胎温度多少正常范围
- 下一篇: win7怎么显示txt后缀 Window