【大散分】自觉找到了一个将阿拉伯数字转换成中文大写的最简单算法

fanz2000 2004-08-16 02:46:31
代码如下:

//加到类的定义部分
private static string[] cstr={"零","壹","贰","叁","肆", "伍", "陆","柒","捌","玖"};
private static string[] wstr={"","","拾","佰","仟","萬","拾","佰","仟","億","拾","佰","仟"};
//数字必须在12位整数以内的字符串
//调用方式如:Label1.Text=ConvertInt("数字字符串");

public string ConvertInt(string str)
{
int len=str.Length;
int i;
string tmpstr,rstr;
rstr="";
for(i=1;i<=len;i++)
{
tmpstr=str.Substring(len-i,1);
rstr=string.Concat(cstr[Int32.Parse(tmpstr)]+wstr[i],rstr);
}
rstr=rstr.Replace("拾零","拾");
rstr=rstr.Replace("零拾","零");
rstr=rstr.Replace("零佰","零");
rstr=rstr.Replace("零仟","零");
rstr=rstr.Replace("零萬","萬");
for(i=1;i<=6;i++)
rstr=rstr.Replace("零零","零");
rstr=rstr.Replace("零萬","零");
rstr=rstr.Replace("零億","億");
rstr=rstr.Replace("零零","零");
rstr+="圆整";
return rstr;
}
...全文
540 74 打赏 收藏 转发到动态 举报
写回复
用AI写文章
74 条回复
切换为时间正序
请发表友善的回复…
发表回复
xinshaw 2004-10-15
  • 打赏
  • 举报
回复
还行
sanall 2004-10-15
  • 打赏
  • 举报
回复
代码简短,效率低下,
wzj1215 2004-10-15
  • 打赏
  • 举报
回复
using System;

namespace xxxxx
{
/// <summary>
/// Class1 的摘要说明。
/// </summary>
class Class1
{
/// <summary>
/// 应用程序的主入口点。
/// </summary>
[STAThread]
static void Main(string[] args)
{
Console.Write("请输入数字");
string temp=Console.ReadLine();
int num=Convert.ToInt32(temp);
temp=num.ToString();
char[] a=temp.ToCharArray();

string str="";
int lang=a.Length;
for (int i=0;i<a.Length;i++)
{

if (i<a.Length-1)
{

if (!(a[i]=='0'&a[i+1]=='0'))
{
if (!(a[i]=='0'& lang==9))
str+=dx(a[i]);


if (a[i]!='0')
{
if (lang>4&&lang<9)
{
str+=ws(lang-4);


}
else if(lang==9)
{
str+=ws(lang);
}


else
{
str+=ws(lang);

}
}

}
if (lang==5)
{
str+=ws(lang);
Console.WriteLine("等于万位:"+str);
}
//
}
else
{
if (a[i]!='0')
str+=dx(a[i]);
string ss=dx(a[i]);

}


lang-=1;

}
Console.WriteLine(str);



//
// TODO: 在此处添加代码以启动应用程序
//
}
public static string dx(char x)
{
switch (x)
{
case '0':
return "零";

case '1':
return "壹";

case '2':
return "贰";

case '3':
return "叁";

case '4':
return "肆";

case '5':
return "伍";

case '6':
return "陆";

case '7':
return "柒";

case '8':
return "捌";

case '9':
return "玖";
default:
return "您输入不合法";
}
}
public static string ws(int y)
{
switch (y)
{
case 1:
return "";
case 2:
return "十";
case 3:
return "百";
case 4:
return "千";
case 5:
return "万";
case 9:
return "亿";


default:
return "出错";

}
}

}

}



我这也有一个
swlswl27 2004-10-15
  • 打赏
  • 举报
回复
支持ING...
接分!
hawk234 2004-10-15
  • 打赏
  • 举报
回复
very good
hebookboy 2004-10-15
  • 打赏
  • 举报
回复
好东西啊
netspirit2004 2004-10-15
  • 打赏
  • 举报
回复
不错啊,简单明了!

但不知道那位大虾可不可设计一个更优的出来大家共同学习啊!
happyRose 2004-10-15
  • 打赏
  • 举报
回复
up
生活真美好 2004-10-14
  • 打赏
  • 举报
回复
不错
yaopeng117 2004-10-14
  • 打赏
  • 举报
回复
收藏!
Mystj 2004-10-14
  • 打赏
  • 举报
回复
up
astrofay 2004-10-14
  • 打赏
  • 举报
回复
顶!!
还没用过
先谢谢了
fhvsbgmy 2004-10-14
  • 打赏
  • 举报
回复
-----太好啦!
fhvsbgmy 2004-10-14
  • 打赏
  • 举报
回复
有问题
:)
cq_lqj 2004-10-14
  • 打赏
  • 举报
回复
不接分都不行
xiaohutushen 2004-10-14
  • 打赏
  • 举报
回复
up
罗卜基斯 2004-10-14
  • 打赏
  • 举报
回复
呵呵,这个老早就做了 用C++和C#个做拉 一遍啊,
不过我觉得还不是最好的
Eddie005 2004-10-14
  • 打赏
  • 举报
回复
呵呵~ 简单明了的代码,
但却不是效率最优的算法,原因在那7个Replace
------ 个人意见
Eddie005 2004-10-14
  • 打赏
  • 举报
回复
呵呵,简单明了的算法,但是...
效率不是最优的,原因在那7个Replace : 个人意见
pc_hang 2004-10-14
  • 打赏
  • 举报
回复
8错
加载更多回复(54)

110,561

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧