2010-06-28 3 views
0

s1 = 6/28/2010 4:46:36 PMs2 = 16:46:36.5013946 문자열을 분할하고 싶습니다. 을 입력하고 새 s3 = 20010062816463650에 연결합니다. 하지만 s2를 나눌 때. 내 정규식이 작동하지 않습니다. 나는 지금 멈추었다. 일반 식에 사용되는 경우는Regex 표현식 및 문자열 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

을이에 대한 모든 RegEx를 사용하는 이유는 무엇입니까? (당신이 정확한 구문 분석을해야하는 경우도 ParseExact 및 형식 문자열을 TryParseExact가)

사용 DateTime.TryParse 또는 DateTime.ParseDateTime 객체에 입력 문자열을 구문 분석합니다.

그런 다음 DateTime 개체에서 직접 원하는 정확한 출력을 출력 할 custom format string과 함께 DateTime.ToString을 사용할 수 있습니다.

DateTime.ToString("yyyyMMddHHmmssff"); 
+0

좋은 해결책을 가르쳐 주셔서 감사합니다. –

3

도트는 (.)는 임의의 문자 일치한다. 당신은 백 슬래시로 이스케이프해야 할 다음은 문자열 리터럴에서 수행 탈출이 완전히 분리되어 있다는

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

주 -이 정규 표현식 언어가 아닌 C# 언어의 부분입니다.

(나는 또한 아마 정규 표현식을 사용하는 것이 가장 적절한 솔루션 어쨌든 여기 아니라고 오뎃의 제안에 동의 할 것입니다.)