黑马程序员技术交流社区

标题: 如何将2013-01-03转换成二零一三年一月三日 [打印本页]

作者: 戴鑫凯    时间: 2013-2-21 21:17
标题: 如何将2013-01-03转换成二零一三年一月三日
本帖最后由 pokemon 于 2013-2-21 22:04 编辑

求解答,没有 2013-13-43 这种bug的
作者: 徐荣权    时间: 2013-2-21 21:28
本帖最后由 徐荣权 于 2013-2-21 21:35 编辑

我的做法是先用split截取字符串, 然后用if判断,if(a==1)替换成一,以此类推。比较简单,但是麻烦点。。。
作者: 李景荣    时间: 2013-2-21 21:53
                   //c#时间格式转换汉字大写 比如: “2011年6月4日” 转换成 “二零一一年六月四日”。
            //(参考提示:把字符串作为char数组来用,判断如果是2→’二’,0→’零’,1→‘一’…)
            string str="2011年6月4日";
            char[] charStr = str.ToCharArray();
            for (int i = 0; i < charStr.Length; i++)
            {
                switch (charStr[i])
                {
                    case '0':
                        charStr[i] = '零';
                        break;
                    case '1':
                        charStr[i] = '一';
                        break;
                    case '2':
                        charStr[i] = '二';
                        break;
                    case '3':
                        charStr[i] = '三';
                        break;
                    case '4':
                        charStr[i] = '四';
                        break;
                    case '5':
                        charStr[i] = '五';
                        break;
                    case '6':
                        charStr[i] = '六';
                        break;
                    case '7':
                        charStr[i] = '七';
                        break;
                    case '8':
                        charStr[i] = '八';
                        break;
                    case '9':
                        charStr[i] = '九';
                        break;
                }
            }
            str = new string(charStr);
            Console.WriteLine(str);
            Console.ReadKey();
作者: 刘明杰    时间: 2013-2-21 21:53
本帖最后由 刘明杰 于 2013-2-21 21:55 编辑

1、split截取出来月份和日 进行判断。
2、先使用IndexOf() 得到第一个“-”的位置索引,同样使用IndexOf() 得到第二个“-”的位置索引,然后使用Substring() 从第一个“-”索引+1开始截取2个字符串,就得到了月份,就可以判断输入是否合法了。 最后也使用Substring()从第二个“-”的位置索引+1开始截取到最后,得到日的字符串,进行判断就行了。
作者: 罗海云    时间: 2013-2-21 21:54
http://blog.sina.com.cn/s/blog_4449f2f90100edxv.html推荐你去看下这个.
作者: 康晓璞    时间: 2013-2-21 21:59
我的做法是将年,月,日,分别分别处理
   首先,建立字典
    年用0到9这几个数字做键放到字典DictYear[0]=“零”,DictYear[1]="一",。。。
   月用01到12这几个数字做键放到字典DicMontht[01]='"一月",DicyMonth[02]="二月",。。。
   日用01到31这几个数做键放到字典DictDay[01]=“一日”,DictDay[02]=“二日”,。。
再次,
    将年取出,循环取出数字做DictYear的键的得到相应好汉字,
    将月取出做DictMonth的键,得到相应的月份
     将日取出做DictDay的键,得到相应的日
最后将转换的汉字加分割符组合起来。

作者: 王立    时间: 2013-2-21 22:09
DateTime dt1 = Convert.ToDateTime("2013-01-03");
            string a = string.Format("{0:yyyy年M月d日}", dt1);   //2013年1月3日   如果想要2013年01月03日   就yyyy年MM月dd日
            String[] nums = { "0零", "1一", "2二", "3三", "4四", "5五",
            "6六", "7七", "8八", "9九" };
            for (int i = 0; i < nums .Length ; i++)
            {
                string num = nums[i];
                a = a.Replace(num[0].ToString (), num[1].ToString ());
            }
            //二零一三年一月三日
            MessageBox.Show(a);
作者: 郝滨    时间: 2013-2-22 08:22
做好设置字典 把以“1一 2二 3三。。。”这种形式。以空格分隔
split截取出来月份和日 以“-”为参照。然后parts[0]直接转换:2013直接二零一三;parts[1]为月份,要考虑十的问题,分情况;parts[2]为日,也要分情况
作者: 吕振    时间: 2013-2-22 13:17
楼上说得好啊,简明扼要,考虑周全,建议回复都这样就好了




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2