2010-06-28 56 views
0

我想分割我的字符串s1 = 6/28/2010 4:46:36 PMs2 = 16:46:36.5013946。 並將它們連接到新的s3 = 20010062816463650。但是當我分裂s2。我的正則表達式不起作用。我現在暫停了。正則表達式和C#中的字符串問題

using System; 
using System.Collections.Generic; 
using System.Text; 
using System.Text.RegularExpressions; 

namespace ConAppTest 
{ 
    class Program 
    { 

     static void Main(string[] args) 
     { 
      string s1 = ""; // date 
      string s2 = ""; // time 
      Console.WriteLine("{0}", DateTime.Now); 
      s1 = DateTime.Now.ToString(); 
      Console.WriteLine("{0}", DateTime.Now.TimeOfDay); 
      s2 = DateTime.Now.TimeOfDay.ToString(); 

      Regex regex1 = new Regex(@" |:|/"); //6/28/2010 2:19:21 PM 
      char[] separators1 = { ' ', '/' }; 
      foreach (string sub1 in regex1.Split(s1)) 
      { 
       Console.WriteLine("Word1: {0}", sub1); 
      } 

      Regex regex2 = new Regex(@":|."); //14:19:21.8771215 
      char[] separators2 = { ':', '.' }; 
      foreach (string sub2 in regex2.Split(s2)) 
      { 
       Console.WriteLine("Word2: {0}", sub2); 
      } 
     } 



    } 
} 
//output 
//6/28/2010 4:46:36 PM 
//16:46:36.5013946 
//Word1: 6 
//Word1: 28 
//Word1: 2010 
//Word1: 4 
//Word1: 46 
//Word1: 36 
//Word1: PM 
//Word2: 
//Word2: 
//Word2: 
//Word2: 
//Word2: 
//Word2: 
//Word2: 
//Word2: 
//Word2: 
//Word2: 
//Word2: 
//Word2: 
//Word2: 
//Word2: 
//Word2: 
//Word2: 
//Word2: 

回答

4

使用DateTime.TryParseDateTime.Parse解析輸入字符串爲DateTime對象(如果你需要一個確切的解析,也ParseExactTryParseExact這需要一個格式字符串有)。

然後,您可以使用DateTime.ToStringcustom format string,它將直接從DateTime對象輸出所需的確切輸出。

DateTime.ToString("yyyyMMddHHmmssff"); 
+0

非常感謝您給我提供了很好的解決方案。 – 2010-06-29 00:51:36

3

甲點(.)在正則表達式中使用時匹配任何字符。你需要用反斜線轉義:

Regex regex2 = new Regex(@":|\."); 

請注意,這是完全分開的,逸出字符串文字進行 - 這是正則表達式語言,而不是C#語言的一部分。

你爲什麼要使用RegEx在所有的這(我會還與俄德的建議,同意在使用正則表達式可能不是最合適的解決方案在這裏反正。)