本帖最后由 李君言 于 2013-4-24 18:08 编辑
namespace tese7
{
class Program
{ //时间格式转换汉字大写 比如: “2011年16月20日” 转换成 “二零十六年六月二十日”。
static void Main(string[] args)
{
char[] hanzi = { '零', '一', '二', '三', '四', '五', '六', '七', '八', '九' };
char[] shuzi = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9' };//定义两个数组用于对比
string riqi = "2011年16月20日";// 例如日期为2011年16月20日
int nian = 0;//判断“年”字出现在第几个字符
for (int a = 0; a < riqi.Length; a++)
{
if (riqi[a] == '年')
{
nian = a;
}
}
int yue = 0;//判断“月”和“年”的距离
for (int a = nian; a < riqi.Length; a++)
{
if (riqi[a] == '月')
{
yue = a - nian;
}
}
int ri = 0;//判断“日”和“月”的距离
for (int a = nian + yue; a < riqi.Length; a++)
{
if (riqi[a] == '日')
{
ri = a - (nian + yue);
}
}
//分别把年月日提取出来
//把年提取出来
char[] year = new char[nian];
for (int a = 0; a < nian; a++)
{
for (int b = 0; b < shuzi.Length; b++)
{
if (riqi[a] == shuzi)
{
year[a] = hanzi;
}
}
}
//把月提取出来,以年月之间的距离为断点;当年和月的距离大于2,说明月份是两位数
int m = 0;
char[] moont = new char[yue];
for (int a = nian; a < nian + yue; a++)
{
for (int b = 0; b < shuzi.Length; b++)
{
if (riqi[a] == shuzi && ((yue > 2 && riqi[a] == '1') && m < 1))//当月份第一位数为一个时候
{
moont[m] = '十';
m++;
}
else if (riqi[a] == shuzi && ((yue > 2 && riqi[a] != '0') && m < 1))//当月份是两位且没有零时情况一
{
moont[m] = hanzi;
m++;
moont[m] = '十';
m++;
}
else if (riqi[a] == shuzi && ((yue > 2 && riqi[a] != '0') && m == 2))//当月份是两位且没有零时,情况二
{
moont[m] = hanzi;
}
else if (riqi[a] == shuzi && (yue > 2 && riqi[a] == '0'))//当月份是两位有零时,因为之前已经赋值了一个十
{
break;
}
else if (riqi[a] == shuzi) //当月数的单数时
{
moont[m] = hanzi;
}
}
}
//把日 提取出来,当月和日的距离大于2,说明月份是两位数
m = 0;
char[] day = new char[ri];
for (int a = nian + ri + 1; a < riqi.Length; a++)
{
for (int b = 0; b < shuzi.Length; b++)
{
if (riqi[a] == shuzi && ((ri > 2 && riqi[a] == '1') && m < 1))//当月份第一位数为一个时候
{
day[m] = '十';
m++;
}
else if (riqi[a] == shuzi && ((ri > 2 && riqi[a] != '0') && m < 1))//当月份是两位且没有零时情况一
{
day[m] = hanzi;
m++;
day[m] = '十';
m++;
}
else if (riqi[a] == shuzi && ((ri > 2 && riqi[a] != '0') && m == 2))//当月份是两位且没有零时,情况二
{
day[m] = hanzi;
}
else if (riqi[a] == shuzi && (ri > 2 && riqi[a] == '0'))//当月份是两位有零时,因为之前已经赋值了一个十
{
break;
}
else if (riqi[a] == shuzi) //当月数的单数时
{
day[m] = hanzi;
}
}
}
//输出的时候把后面没有赋值的,数组里面的字符不输出
for (int i = 0; i < year.Length; i++)
{
Console.Write(year);
}
Console.Write("年");
for (int i = 0; i < moont.Length; i++)
{
if (moont != 0)
Console.Write(moont);
}
Console.Write("月");
for (int i = 0; i < day.Length; i++)
{
if (day != 0)
Console.Write(day);
}
Console.Write("日");
Console.ReadKey();
}
}
}
上面的代码是我写,知识有限目前只能这样,不知道有没有更好的思路,大家分享下,谢谢!!!
|