2014-06-24 3 views
0

내 입력은 컴퓨터의 실행 시간과 날짜를 나타내는 문자열입니다. 문제는이 문자열이 잘못된 형식이므로 을 사용하여 DateTime 개체로 변환 할 수 없다는 것입니다.

입력 예 :특정 위치의 문자 바꾸기

2014-01-07-15.26.46.000452

내가 (마지막 교체 작업을 할 수있는 무언가로 변환 할 필요가

'-'공백 및 ''는 처음 2 '.')과 같이 :

2014년 1월 7일 15 : 26 : 46.000452

myString.Replace은 특정 위치의 문자를 바꿔야하므로이 문제를 해결하기 위해 정규 표현식을 사용해야한다고 생각했습니다. 불행히도, 정규식을 사용하여 내 지식을 아무 것도 가까이 있으며 내 문제를 일치하는 예제를 찾을 수 없습니다.

누구든지 해결할 수 있습니까? (또한, 나는에 대한 설명을 할 방법 & 왜 정규식 작품)

답변

2

에 의해 DateTime.ParseExact를 사용하여 구문 분석,하지만 일을 할 수

string yourString = "2014-01-07-15.26.46.000452"; 
string newString = Regex.Replace(yourString, @"(\d+)-(\d+)-(\d+)-(\d+).(\d+).(\d+).(\d+)", "$1-$2-$3 $4:$5:$6.$7"); 

그냥 주위의 횡설수설과는 달리 모든 수치를 잘라 내고 원하는 날짜를 만듭니다.

5

당신은 그것은 아주 예쁜 보이지 않는 Custom Date and Time Format Strings

DateTime dt = DateTime.ParseExact("2014-01-07-15.26.46.000452", 
            "yyyy-MM-dd-H.m.s.ffffff", 
            System.Globalization.CultureInfo.InvariantCulture); 
+0

나는 정규식을 고집하는 것을 선호하지만 이것은 역시 좋은 해결책이다. +1 –

+2

@TzahMama : 어쩌면 나는 내 자신의 안경을 던지고있다. 그러나 이것은 더 나은 해결책이다. –

+1

@PatrickHofman 아마 더 좋습니다. 반면에 Regex를 이해하려고합니다. 이 솔루션은 잘 작동하지만 Regex를 실험하고 싶습니다. 따라서 저는 그것을 선호합니다. –