0725-字符串练习:汉字时间转为阿拉伯数字时间

这几天的.NET的基础加强,主要是学习了集合,字符串,以及文件的操作:

字符串:具有不可变性,一旦一个字符串被声明了那么就不能再改变了,所谓的改变字符串,是将一个已声明的字符串先转换为字节数组,然后改变数组中的指定的一个元素后,再重新转换为一个新的 字符串。而原有的字符串在内存中还是存在的。

在字符串的不断的拼接中使用StringBuilder 的Append方法进行拼接,效率是很高的。

字符串练习:汉字时间转为阿拉伯数字时间

 

1.在Main方法中:

//先定义一个汉字和阿拉伯数字之间的字典集合
            Dictionary<string, string> dic = new Dictionary<string, string>(); //键存储汉字日期,值存储对应的阿拉伯数字
            string[] temp = { "零", "一", "二", "三", "四", "五", "六", "七", "八", "九", "十" };
            //通过一个循环给集合添加数据
            for (int i = 0; i <= 10; i++)
            {
                dic.Add(temp[i], i.ToString());
            }
            //提示用户输入,然后进行转换 ,返回一个数字字符串的结果给用户
            while (true)
            {
                Console.WriteLine("请输入一个汉表示的日期:");
                string date = Console.ReadLine();
                //按照年月日进行分割
                string[] dateTemp = date.Split(new char[] { '年', '月', '日' }, StringSplitOptions.RemoveEmptyEntries);
                //string strNewDate = 方法(date, dic);
                string year = GetYearDate(dateTemp[0], dic);
                string month = GetMonthOrDay(dateTemp[1], dic);
                string day = GetMonthOrDay(dateTemp[2], dic);

                Console.WriteLine("你输入的日期是:{0}", date);
                Console.WriteLine("转换后的结果是:{0}-{1}-{2}", year, month, day);
                Console.ReadKey();

//2.定义一个转换年份的方法:

 /// 将汉字的年份转换为数字的 年份
        /// </summary>
        /// <param name="str"></param>
        /// <param name="dic"></param>
        /// <returns></returns>
        private static string GetYearDate(string str, Dictionary<string, string> dic)
        {
            //声明一个StringBuilder
            StringBuilder sb = new StringBuilder();
            //遍历字符串中的每个元素,然后和字典集合进行比对,如果有就替换,
            for (int i = 0; i < str.Length; i++)
            {
                //然后将集合中的值取出追加到sb中
                sb.Append(dic[str[i].ToString()]);
            }
            return sb.ToString();
        }

//3.定义一个处理月份,日期的方法,这个方法处理十,之后 需要调用处理年份的方法:

 //将汉字的月日转换为数字
        // 十月十日 -->10     十一 ;二十二; 二十;
        /// <summary>
        /// 根据字符串和字典集合,进行月份和日期的处理
        /// </summary>
        /// <param name="str">要转换处理的字符串</param>
        /// <param name="dic">存储汉字数字的集合</param>
        /// <returns></returns>
        private static string GetMonthOrDay(string str, Dictionary<string, string> dic)
        {
            // StringBuilder sbx = new StringBuilder();
            string res = "";
            //根据字符串中"十"的位置来进行判断:
            if (!str.Contains("十"))
            {
                res = "0" + GetYearDate(str, dic);
            }
            else
            {
                switch (str.Length)
                {
                    case 1:
                        //如果字符串的长度为1
                        if (str[0] == '十')
                        {
                            res = "10";
                        }
                        break;
                    case 2:
                        if (str[0] == '十')
                        {
                            res = "1" + GetYearDate(str[1].ToString(), dic);
                        }
                        else if (str[1] == '十')
                        {
                            res = GetYearDate(str[0].ToString(), dic) + "0";
                        }
                        break;
                    case 3:
                        if (str[1] == '十')
                        {
                            res = GetYearDate(str[0].ToString(), dic) + GetYearDate(str[2].ToString(), dic);
                        }
                        break;
                }//switch_end
            }
            return res;
        }


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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

zqrCode

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值