using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace DateConversion
{
class Program
{
static void Main(string[] args)
{
//案例:編寫一個函數進行日期轉換,將輸入的中文日期轉換為阿拉伯數字日期,比如:二零一二年十二月二十一日要轉換為2012-12-21。(處理“十”的問題:1.*月十日;2.*月十三日;3.*月二十三日;4.*月三十日;)4中情況對“十”的不同翻譯。1→10;2→1;3→不翻譯;4→0【年部分不可能出現’十’,都出現在了月與日部分。】
//測試數據:二零一二年十二月二十一日(2012年12月21日)、二零零九年七月九日、二零一零年十月二十四日、二零一零年十月二十日
string str = Console.ReadLine();
string ziDian = "零0 一1 二2 三3 四4 五5 六6 七7 八8 九9";
//給字典集合添加數據
Dictionary<char, char> dic = new Dictionary<char, char>();
//分隔字符串為數組
string[] temp = ziDian.Split(new char[] { ' ' }, StringSplitOptions.RemoveEmptyEntries);
for (int i = 0; i < temp.Length; i++)
{
dic.Add(temp[i][0], temp[i][1]);
}
string result = string.Empty;
//翻譯
for (int i = 0; i < str.Length; i++)
{
//檢查字典鍵中是否包含輸入的中文日期中相關字符,如果包含則將相對應的字典值追加到輸入字符串中
if (dic.ContainsKey(str[i]))
{
result += dic[str[i]];
}
else
{
//字典中明顯不包含鍵“十”
if (str[i] == '十')
{
//注意:本例中需要注意的是當輸入的中文日期中包含“十”日的時候需要進行的不同轉換,月同樣對待
//1.*月十日->翻譯為10;2.*月十三日-->翻譯為1;3.*月二十三日->不翻譯;4.*月三十日->翻譯為0
//1.十月->翻譯為10,2.十一月->翻譯為1,3.十二月->翻譯為1
if (!dic.ContainsKey(str[i - 1]) && !dic.ContainsKey(str[i + 1]))
{
result += "10";
}
else if (!dic.ContainsKey(str[i - 1]) && dic.ContainsKey(str[i + 1]))
{
result += "1";
}
else if (dic.ContainsKey(str[i - 1]) && dic.ContainsKey(str[i + 1]))
{
}
else
{
result += "0";
}
}
else
{
//年月日之間用短橫線分隔
result += "-";
}
}
}
result = result.TrimEnd('-');
Console.WriteLine(result);
Console.ReadKey();
}
}
}
C#編寫壹個函數將輸入的中文日期轉換為阿拉伯數字日期
最后編輯于 :
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
推薦閱讀更多精彩內容
- 原創 (轉載說明出處) 應該沒有見過更精簡的 中文數字和阿拉伯數字相互轉換函數了。支持一些語法修正,歡迎測試反饋bug