2017-03-07 1 views
0

다른 데이터가있는 텍스트 파일이 있습니다. 이제 데이터를 올바르게 사용할 수있게되기 전에 파일에서 여러 항목을 대체해야합니다. Regex로 텍스트를 대체했습니다. 하지만 지금은 날짜를 변경해야합니다. 그러나 나는 그것을하는 방법을 이해할 수 없다.C에서 날짜 및 형식을 변경하십시오.

날짜는 다음과 같다 : "utc": "2017-10-02 19:55:00.205263000 Z" 그리고이 일자 포맷의 모든 발행 수에 대한이 결과를 얻으려면 : 그것은

string pattern = @"{0:yyyy-mm-dd hh:mm:ss.fff Z}"; 
string replacement = "{0:yyyy-mm-dd hh:mm:ss"; 
Regex rgx = new Regex(pattern); 
string result = rgx.Replace(theInputTextFile, replacement); 

인가 : "utc": "2017-10-02 19:55:00"

내가 다음 코드를 사용하려고 정규식과 함께 날짜 형식을 사용할 수 없습니다. 아니면 내 코드에서 실수를 했습니까? 당신은 그것의 형식을 변환 할 수 있도록

I used the information from here, for the date formats

+0

RegEx 엔진이 d/m/y 등이 날짜/시간 표시기라는 사실을 알지 못하기 때문에 서식 지정에만 사용됩니다. 순진한'\ d {4} - \ d {2}'는'4digits-2digits'와 일치합니다 ... 완전 일치를 위해'TryParseExact()'가 다시 포맷됩니다. –

답변

3

사실 당신은 Regex.Replace 방법을 대리자를 제공 할 수 있습니다. 이 https://msdn.microsoft.com/en-us/library/cft8645c(v=vs.110).aspx

코드 예제가 아래에, 당신은 질문에 쓴 새로운 형식으로 대체로 포맷 된 날짜 발견 :

class Program 
{ 
    static void Main() 
    { 
     string text = " dasd arew 2017-03-11 12:25:56.345 Z 2017-03-11 12:25:56.345 Z das tfgwe 2017-03-11 12:25:56.345 Z"; 
     string pattern = @"\d{4}\-\d{2}\-\d{2}\s\d{2}\:\d{2}\:\d{2}\.\d{3}\sZ"; 
     Regex r = new Regex(pattern); 
     var res = r.Replace(text, new MatchEvaluator(ConvertDateFormat)); 
     Console.WriteLine(res); 
    } 

    static string ConvertDateFormat(Match m) 
    { 
     var mydate = DateTime.Parse(m.Value); 
     return mydate.ToString("yyyy-MM-dd hh:mm:ss"); 
    } 

} 
+0

이것은 처음에 정확하게 일치했다고 가정합니다. –

+0

@MattJohnson 당신 말이 맞아요. 나는 그렇게 생각했다. 지금 내 코드 샘플에 올바른 정규식 패턴을 추가했습니다. –

+0

예, 작동합니다. 고맙습니다. –

0

그것을인가를이 페이지의 예제를 검사 정규 표현식에 날짜 형식을 사용할 수 없습니다.

수정하십시오. 그것은 불가능합니다. 정규식과 날짜 형식/구문 분석 토큰은 서로 관련이없는 두 가지 개념입니다. 특정 텍스트와 일치해야합니다. 날짜 파서의 내부는 이러한 목표를 달성하기 위해 정규 표현식을 사용할 수 있지만 을 Regex 클래스로 전달하고 2017을 찾을 수는 없습니다. 당신은 \d{4}과 같은 것을 사용해야 만합니다. 그리고 연속 된 4 개의 숫자를 잡을 것입니다. 오전 않고 대신 24 시간 시간 (HH)의 (hh를)

또한 날짜 형식 토큰은 대소 문자를 구분주의, 당신은 (mm를) 분을 혼합 한 개월 (MM)를 12 시간 시간을 사용/오후 표시기 (tt) - 당신이 정규식에 합격 한 이후에 어쨌든 중요 할 것은 아닙니다.

관련 문제