美文网首页
C#编写壹个函数将输入的中文日期转换为阿拉伯数字日期

C#编写壹个函数将输入的中文日期转换为阿拉伯数字日期

作者: 幻凌风 | 来源:发表于2017-07-16 16:40 被阅读725次
    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#编写壹个函数将输入的中文日期转换为阿拉伯数字日期

          本文链接:https://www.haomeiwen.com/subject/plztkxtx.html