2015-10-04 30 views
3

我是C#的新手,一直在和這個挑戰作戰一段時間,並且我已經出現在一堵磚牆上。在文件加載時重新格式化文件中的日期

問題很簡單。我有以下的文件,我加載到MS SQL:

| |500 |RUBBISH_DEFAULT_COLOR_A   |BOB   |24.09.2010|31.12.9999|  |24.09.2010|10:19:42 |    0 |  |  | 
| |500 |RUBBISH_DEFAULT_COLOR_A   |MARIE   |02.06.2008|31.12.9999|  |02.06.2008|01:53:04 |    0 |  |  | 
| |500 |RUBBISH_DEFAULT_COLOR_B   |JOHN   |30.12.2009|31.12.9999|  |30.12.2009|17:54:27 |    0 |  |  | 
| |500 |RUBBISH_DEFAULT_COLOR_C   |RICK   |02.06.2008|31.12.9999|  |02.06.2008|01:53:04 |    0 |  |  | 

我希望做的是創建一個字符串讀者獲取日期列,並從02.06.2008重組他們2008.06.02例如。任何想法最簡單的方法?

被修改的原始文件是幾千行...

的問候,並感謝您的幫助,

約翰

+0

你可以發佈你現在的示例代碼嗎?對於具有代碼的特定問題,SO比針對字符串解析器之類的常規指導更具針對性...... Google可能更有用。你有一個字符串解析器設置了嗎? – SpaceSteak

回答

0

首先,你應該打開你喜歡的任何方式的文件,我使用using塊爲System.IO.StreamReader對象。我的文件位於桌面上,因此我使用Environment類來創建路徑,您可以將簡單路徑替換爲文件當然。 然後用while塊從頭到尾讀取文件。並且對於每一行,我都將字符串拆分爲一個字符串數組,並將日期列轉換爲DateTime並重新轉換爲字符串,您將同時轉換格式並隱式檢查日期(它將拋出System.FormatString

using (System.IO.StreamReader sr = new System.IO.StreamReader(System.Environment.GetFolderPath(System.Environment.SpecialFolder.Desktop) + "\\sample.txt")) 
     { 
      while (sr.EndOfStream == false) 
      { 
       string line = sr.ReadLine(); 
       string[] columns = line.Split('|'); 

       try 
       { 
        //0 1 2  3        4    5   6   7  8   9   10    11  12  13 
        // | |500 |RUBBISH_DEFAULT_COLOR_A   |BOB   |24.09.2010|31.12.9999|  |24.09.2010|10:19:42 |    0 |  |  | 
        columns[5] = System.Convert.ToDateTime(columns[5]).ToString("yyyy.MM.dd"); 
        columns[6] = System.Convert.ToDateTime(columns[6]).ToString("yyyy.MM.dd"); 
        columns[8] = System.Convert.ToDateTime(columns[8]).ToString("yyyy.MM.dd"); 
        columns[9] = System.Convert.ToDateTime(columns[9]).ToString("yyyy.MM.dd"); 
        //any changes can be done to string array before submitting to DB 
       } 
       catch (FormatException ex) 
       { 
        // Do something in case of incoorect format. 
        MessageBox.Show(ex.Message); 
       } 
       MessageBox.Show(string.Format("columns[5]:{0}, columns[6]:{1}", columns[5], columns[6])); 
      } 

     } 
+0

標記爲答案,如果它解決了您的問題。 – ALIRA