- class Program
- {//编写一个函数进行日期转换,将输入的中文日期转换为阿拉伯数字日期,比如:二零一二年十二月二十一日要转换为2012-12-21
- static Dictionary<char, char> dicDate = new Dictionary<char, char>();
- static void Main(string[] args)
- {//定义数组,并使用逗号将数组截分。
- string str = "一1,二2,三3,四4,五5,六6,七7,八8,九9,零0";
- //string str1 = "年-,月-,日 ";
- string[] arr = str.Split(',');
- //string[] arr1 = str1.Split(',');
- //将截出的键值对添加到键值集合中
- for (int i = 0; i < arr.Length; i++)
- {
- dicDate.Add(arr[i][0], arr[i][1]);
- }
- Console.WriteLine("请输入一个日期");
- string date = Console.ReadLine();
- string result = ZhuanHuan(date);
- Console.WriteLine(result);
- Console.ReadKey();
- }
- static string ZhuanHuan(string date)
- {//定义一个可变字符的字符串
- StringBuilder stb = new StringBuilder();
-
- if (date.Contains('十'))
- {
- for (int i = 0; i < date.Length; i++)
- {
- if (dicDate.ContainsKey(date[i]))
- {
- stb.Append(dicDate[date[i]]);
- }
- else if (date[i] == '十')
- {//当输入日期中含有十时,有几种情况,分别说明。
- if (!dicDate.ContainsKey(date[i - 1]) && !dicDate.ContainsKey(date[i + 1]))
- {//例如**月十日
- stb.Append("10");
- }
- else if (dicDate.ContainsKey(date[i - 1]) && !dicDate.ContainsKey(date[i + 1]))
- {//例如**月20日
- stb.Append("0");
- }
- else if (!dicDate.ContainsKey(date[i - 1]) && dicDate.ContainsKey(date[i + 1]))
- {//例如十二月**日
- stb.Append("1");
- }
- else
- {
- stb.Append("");
- }
- }
- else
- {
- stb.Append(date[i]);
- }
- }
- }
- else
- {
- for (int i = 0; i < date.Length; i++)
- {
- if (dicDate.ContainsKey(date[i]))
- {
- stb.Append(dicDate[date[i]]);
- }
- else
- {
- stb.Append(date[i]);
- }
- }
- }
- return stb.ToString();
- }
- }
复制代码 |
|