A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 重新开始 中级黑马   /  2013-10-21 12:07  /  1206 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 重新开始 于 2013-10-22 09:45 编辑

想把代码精简一下,但没想到合适方法,那位能帮我把下边重复的代码再精简一下。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Collections;

namespace test7
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("输入中文日期,如:二零一二年十二月月二十一日");
            //取得中文日期
            string str = Console.ReadLine();
            //将取得的日期分割为年月日三段,并存入数组。
            string[] strsp = str.Split('年', '月', '日');
            //使用遍历将三段年月日替换成数字时间
            for (int n = 0; n < 3;n++ )
            {
                foreach (char i in strsp[n])
                {
                    if (n==2&&3== strsp[2].Length)
                    {
                        #region
                        if ('零' == i)
                        {
                            Console.Write(0);
                        }
                        if ('一' == i)
                        {
                            Console.Write(1); ;
                        }
                        if ('二' == i)
                        {
                            Console.Write(2);
                        }
                        if ('三' == i)
                        {
                            Console.Write(3);
                        }
                        if ('四' == i)
                        {
                            Console.Write(4);
                        }
                        if ('五' == i)
                        {
                            Console.Write(5);
                        }
                        if ('六' == i)
                        {
                            Console.Write(6);
                        }
                        if ('七' == i)
                        {
                            Console.Write(7);
                        }
                        if ('八' == i)
                        {
                            Console.Write(8);
                        }
                        if ('九' == i)
                        {
                            Console.Write(9);
                        }
                        #endregion
                    }
                    else
                     {
                            #region
                        if ('零' == i)
                            {
                                Console.Write(0);
                            }
                            if ('一' == i||'十'==i)
                            {
                                Console.Write(1); ;
                            }
                            if ('二' == i)
                            {
                                Console.Write(2);
                            }
                            if ('三' == i)
                            {
                                Console.Write(3);
                            }
                            if ('四' == i)
                            {
                                Console.Write(4);
                            }
                            if ('五' == i)
                            {
                                Console.Write(5);
                            }
                            if ('六' == i)
                            {
                                Console.Write(6);
                            }
                            if ('七' == i)
                            {
                                Console.Write(7);
                            }
                            if ('八' == i)
                            {
                                Console.Write(8);
                            }
                            if ('九' == i)
                            {
                                Console.Write(9);
                            }
                         #endregion
                    }
                }
                if (n!=2)
                {
                  Console.Write('-');  
                }

            }
            Console.ReadKey();
        }
    }
}

评分

参与人数 1技术分 +2 收起 理由
追溯客 + 2

查看全部评分

3 个回复

正序浏览

同学给你加分了!好好学习!蔡蔡和叶叶在黑马等着你!黑马有你更精彩!快点为了当土豪努力吧!
回复 使用道具 举报
说下我的想法。
我认为,以下一段代码,有重复的很多。
     #region
                        if ('零' == i)
                            {
                                Console.Write(0);
                            }
                            if ('一' == i||'十'==i)
                            {
                                Console.Write(1); ;
                            }
                            if ('二' == i)
                            {
                                Console.Write(2);
                            }
                            if ('三' == i)
                            {
                                Console.Write(3);
                            }
                            if ('四' == i)
                            {
                                Console.Write(4);
                            }
                            if ('五' == i)
                            {
                                Console.Write(5);
                            }
                            if ('六' == i)
                            {
                                Console.Write(6);
                            }
                            if ('七' == i)
                            {
                                Console.Write(7);
                            }
                            if ('八' == i)
                            {
                                Console.Write(8);
                            }
                            if ('九' == i)
                            {
                                Console.Write(9);
                            }
这个可以抽出来一个函数。
先判断     if ('一' == i||'十'==i) 这种情况,其余的作为另外一种情况抽出来函数。
然后就可以精简了。

评分

参与人数 1技术分 +2 收起 理由
追溯客 + 2

查看全部评分

回复 使用道具 举报
说下我的想法
你上来那个if (n==2&&3== strsp[2].Length)这个判定是日的部分吧?日的部分不会‘零’的字样吧,所以这个
if ('零' == i)
                        {
                            Console.Write(0);
                        }
可以去掉。
然后你少考虑了一些情况,
月或者日只有一个‘十’字的时候你这里是跑步对的吧,你是不是直接把这个‘十’翻译成了‘1’,而他实际应该是‘10’。
当月或日是‘二十’‘三十’呢?你是不是翻译成了‘21’和‘31’。至于代码应该怎么,方法很多咯,但是我不能说,是吧

评分

参与人数 1技术分 +1 收起 理由
追溯客 + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马