将大写数字的日期转换为阿拉伯数字的方法

    前两天在公司举行的编程比赛,做了一道题。如下:

         编写一个函数进行日期转换,将输入的中文日期转换为阿拉伯数字日期,比如:二零零八年五月八日要转换为2008-05-08。

    因为觉得有趣,而且有共通的地方。比如说将大写的现金金额转换成阿拉伯数字。故特扔出来抛砖引玉。    

    我用的是C#.       

           private string ConvertDate(string inputDate)
       {
            if (string.IsNullOrEmpty(inputDate))
            {
                return string.Empty;
            }
            DateTime dateTime = new DateTime();
            string date = ConvertChineseToNumber(inputDate);
            if (DateTime.TryParse(date, out dateTime))
            {
                return dateTime.ToString("yyyy-MM-dd");
            }
            else
            {
                return string.Empty;
            }
        }
       

            private string ConvertChineseToNumber(string convertString)
        {
            string result = string.Empty;
            Dictionary<string, string> numberDictionary = new Dictionary<string, string>();
            numberDictionary.Add("零", "0");
            numberDictionary.Add("一", "1");
            numberDictionary.Add("二", "2");
            numberDictionary.Add("三", "3");
            numberDictionary.Add("四", "4");
            numberDictionary.Add("五", "5");
            numberDictionary.Add("六", "6");
            numberDictionary.Add("七", "7");
            numberDictionary.Add("八", "8");
            numberDictionary.Add("九", "9");
            //numberDictionary.Add("十", "10");
            for(int i=0; i<convertString.Length; i++)
            {
                string substring = convertString.Substring(i, 1);
                if (substring == "十")
                {
                    if(i< convertString.IndexOf("年"))
                    {
                        return string.Empty;
                    }
                    if (i > 0 && i < convertString.Length)
                    {
                        string previousString = convertString.Substring(i - 1, 1);
                        string nextString = convertString.Substring(i + 1, 1);
                        if (numberDictionary.ContainsKey(previousString) && numberDictionary.ContainsKey(nextString))
                        {
                        }
                        else if (numberDictionary.ContainsKey(nextString))
                        {
                            result += "1";
                        }
                        else if (numberDictionary.ContainsKey(previousString))
                        {
                            result += "0";
                        }
                        else
                        {
                            result += "10";
                        }
                    }
                }
                else
                {
                    if (numberDictionary.ContainsKey(substring))
                    {
                        result += numberDictionary[substring];
                    }
                    else
                    {
                        result += substring;
                    }
                }
            }
            return result;
        }
       

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值