编程实现将1234为一千二百三十四
发布网友
发布时间:2023-10-19 11:58
我来回答
共1个回答
热心网友
时间:2024-12-13 05:54
给你一个demo自己看看吧,C#写的
using System;
namespace Test
{
class Program
{
static void Main(string[] args)
{
string Num = Console.ReadLine();
Console.WriteLine((new NumFormat()).NumToChn(Num));
Console.ReadKey();
}
}
class NumFormat
{
public NumFormat() { }
// 转换数字
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;
}
}
}