- namespace 日期转大写
- {
- public partial class Form1 : Form
- {
- public Form1()
- {
- InitializeComponent();
- }
- private void btn_Convert_Click(object sender, EventArgs e)
- {
- string OritDate = txt_OritDate.Text;
- //对日期进行分割,获得相应日期数字
- char[] Split = { '年', '月', '日' };
- string[] OritArr = OritDate.Split(Split);
- //通过转换方法对年月日进行转换,并获得新的年月日
- string newYear=YearConvert(OritArr[0]);
- string newMonth = MDConvert(OritArr[1]);
- string newDay = MDConvert(OritArr[2]);
- //拼接新的日期并显示
- string newDate = newYear + "年" + newMonth + "月" + newDay + "日";
- txt_NewDate.Text = newDate;
- }
- private string YearConvert(string s)
- {
- //对年份进行转换
- char[] yearW = s.ToCharArray();
- char[] numUP = { '零', '一', '二', '三', '四', '五', '六', '七', '八', '九' };
- string newYear = "";
- for (int i = 0; i < yearW.Length; i++)
- {
- //根据字符数组yearW中的数字获取字符数组numUP中相对的大小数字
- newYear = newYear + numUP[Convert.ToInt32(yearW[i].ToString())].ToString();
- }
- return newYear;
-
- }
- private string MDConvert(string md)
- {
- //思路跟年份差不多,只是考虑了位数和整十的情况
- //定义一个字符数组存放大小数字,只是零用空来代替,因为出现零的时候不需要显示
- char[] numUP = { ' ', '一', '二', '三', '四', '五', '六', '七', '八', '九' };
- if (md.Length == 1)
- {
- //根据字符数组yearW中的数字获取字符数组numUP中相对的大小数字,因为可能在出现整十的时候会有空格,所以最后要去掉空格
- string newMD = numUP[Convert.ToInt32(md.ToString())].ToString().Trim();
- return newMD;
- }
- else
- {
- string newMD = "";
- switch (md[0])
- {
- case '1':
- newMD = "十" + numUP[Convert.ToInt32(md[1].ToString())].ToString().Trim();
- break;
- case '2':
- newMD = "二十" + numUP[Convert.ToInt32(md[1].ToString())].ToString().Trim();
- break;
- default:
- newMD = "三十" + numUP[Convert.ToInt32(md[1].ToString())].ToString().Trim();
- break;
- }
- return newMD;
- }
- }
- }
- }
复制代码 当然,这还是有些BUG的,比如输入的日期不规范,那你可以自己进行约束下,我这里只是想说怎么实现这个转换。思路来源于教学视频中身份证号验证 |