using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace DateConversion
{
class Program
{
static void Main(string[] args)
{
//案例:编写一个函数进行日期转换,将输入的中文日期转换为阿拉伯数字日期,比如:二零一二年十二月二十一日要转换为2012-12-21。(处理“十”的问题:1.*月十日;2.*月十三日;3.*月二十三日;4.*月三十日;)4中情况对“十”的不同翻译。1→10;2→1;3→不翻译;4→0【年部分不可能出现’十’,都出现在了月与日部分。】
//测试数据:二零一二年十二月二十一日(2012年12月21日)、二零零九年七月九日、二零一零年十月二十四日、二零一零年十月二十日
string str = Console.ReadLine();
string ziDian = "零0 一1 二2 三3 四4 五5 六6 七7 八8 九9";
//给字典集合添加数据
Dictionary<char, char> dic = new Dictionary<char, char>();
//分隔字符串为数组
string[] temp = ziDian.Split(new char[] { ' ' }, StringSplitOptions.RemoveEmptyEntries);
for (int i = 0; i < temp.Length; i++)
{
dic.Add(temp[i][0], temp[i][1]);
}
string result = string.Empty;
//翻译
for (int i = 0; i < str.Length; i++)
{
//检查字典键中是否包含输入的中文日期中相关字符,如果包含则将相对应的字典值追加到输入字符串中
if (dic.ContainsKey(str[i]))
{
result += dic[str[i]];
}
else
{
//字典中明显不包含键“十”
if (str[i] == '十')
{
//注意:本例中需要注意的是当输入的中文日期中包含“十”日的时候需要进行的不同转换,月同样对待
//1.*月十日->翻译为10;2.*月十三日-->翻译为1;3.*月二十三日->不翻译;4.*月三十日->翻译为0
//1.十月->翻译为10,2.十一月->翻译为1,3.十二月->翻译为1
if (!dic.ContainsKey(str[i - 1]) && !dic.ContainsKey(str[i + 1]))
{
result += "10";
}
else if (!dic.ContainsKey(str[i - 1]) && dic.ContainsKey(str[i + 1]))
{
result += "1";
}
else if (dic.ContainsKey(str[i - 1]) && dic.ContainsKey(str[i + 1]))
{
}
else
{
result += "0";
}
}
else
{
//年月日之间用短横线分隔
result += "-";
}
}
}
result = result.TrimEnd('-');
Console.WriteLine(result);
Console.ReadKey();
}
}
}
C#编写壹个函数将输入的中文日期转换为阿拉伯数字日期
最后编辑于 :
©著作权归作者所有,转载或内容合作请联系作者
- 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
- 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
- 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
推荐阅读更多精彩内容
- 原创 (转载说明出处) 应该没有见过更精简的 中文数字和阿拉伯数字相互转换函数了。支持一些语法修正,欢迎测试反馈bug