2009-10-12 4 views
1

날짜 (및/또는 시간)가 포함 된 문자열을 구문 분석하는 함수가 있습니다. "2009-12-10". 나는 짧은 날짜 패턴에서 연 - 월 - 일의 순서를 얻는다. 문자열을 사용할 때 Char.IsSplarator (ch)을 사용하여 숫자가 언제 끝나는 지 알아냅니다.지역 불가 지론 Char.IsSeparator (ch)?

그러나 한국어의 경우 Char.IsSplarator (ch)은 구분 문자에서 false를 반환합니다. 지역 설정에 관계없이 숫자 사이의 문자가 구분 기호인지 여부를 알 수있는 방법이 있습니까?

("* 20 May 200 * 9"와 같은 내용이 더 포함 된 문자열도 구문 분석합니다. 기본적으로 콘텐츠를 모르는 경우 구분 기호에 Char.IsAlphaNum()이 작동하지 않습니다.

입력 예 : "20.10.2009" "2009-05-20" "2009 년 5 월 20 일" "20.05.2009 10:00 AM" "1/1/2009"(싱가포르의 D/M/Y "Tisdag, 1 Januari 1962"(모든 문자열 현지화 됨)

출력은 가능한 한 많이 채워진 DateTime 인스턴스와 같습니다 (자체 유형을 사용하지만)

한국어는 시간 앞에서 두 자로 보이고 구분 기호로는 문자열의 위치에 따라 기호가 달라집니다.

+0

나오지 않았어 약 프레임 워크 걱정 필요한 문화권 별 형식으로 정보를 전달하고 할 수 - Parse, ParseExact, TryParse 또는 TryParseExact을 반대 접근법을 취하고 대신 각 비교에 올바른 지역을 사용합니까? –

+0

입력 및 예상 출력의 몇 가지 예를 제공 할 수 있습니까? –

답변

0

수동으로 문자열을 구문 분석해야하는 이유가 있습니까?

당신은 방법 구문 분석 내장 된 날짜/시간 사용한 경우 - 다음 구분 등

+0

저는 자유로운 손으로이 포맷팅 모듈이 무엇을 할 수 있었는지 완전히 이해했다고 생각합니다. 그러나 내가했을 때 주로 관리되지 않는 C 코드 C#을 포팅하는 것이 었습니다. 특히 서식 지정은 이전과 완전히 같아야하기 때문에 (이 루틴은 다른 사람 등에 의해 사용됩니다). –

+0

당신 말이 맞아요. 방금 물건을 버리고 표준 .NET 메서드를 사용하여 다시 작성했습니다. 내게 빛을 보여 주셔서 고마워 :) –

2

현재 짧은 형식을 사용하여 형식을 선택하는 경우 DateTimeFormatInfo.CurrentInfo.DateSeparator을 통해 구분 기호를 선택할 수도 있습니다.

+0

디버거를 보면 '-'이지만 전체 날짜를 보면 한국어 문자가 있습니다. –