2016-09-06 2 views
0

나는 현재 DateTime.ParseExact 함수와 비슷한 두 개의 문자열을 구문 분석하려고하는 사용자 지정 유효성 검사 컨트롤을 구축하고 있습니다.문자열을 구문 분석하고 형식 문자열을 기반으로 문자열을 이중으로 변환하는 방법은 무엇입니까?

Console.WriteLine(Double.ParseExact("12.00", "0.00", CultureInfo.InvariantCulture).ToString()); // should print "12" 
Console.WriteLine(Double.ParseExact("asd", "0.00", CultureInfo.InvariantCulture).ToString()); // should throw FormatException 
Console.WriteLine(Double.ParseExact("12.000", "0.00", CultureInfo.InvariantCulture).ToString()); // should throw FormatException, because it has to many decimal digits 

내가 단순히 형식 문자열없이 분석 할 수 있습니다 알고 있지만 좀 더 엄격한 규칙이 여기에 적용 할 : 여기

내가 보관하려고 할 것입니다. 형식 문자열은 standard format string 또는 custom format string 일 수 있으므로 다를 수 있습니다.

물론이 방법은 존재하지 않습니다. 여기에 동일한을 수행하는 DateTime 클래스에있는 기존 방법이지만 DateTime들과 함께 :

DateTime.ParseExact("2016-09-06T11:57:55.335", "yyyy-MM-ddTHH:mm:ss.fff", CultureInfo.InvariantCulture, DateTimeStyles.AssumeUniversal); 

나는 Double에 대해 동일한 작업을 수행 할 수 있습니까? 그런데


...

그 이유는 내가 BaseValidator로부터 상속 사용자 정의의 asp.net 웹 양식 RangeValidator을 짓고 있어요입니다. 이 컨트롤을 DateTime과 호환되도록 지정하고 사용자 정의 형식 문자열을 사용하고 InvariantCulture을 사용하여 새 HTML5 컨트롤 ([type=numeric][type=datetime])과 완벽하게 호환되도록합니다.

컨트롤의 숫자 유효성 검사 부분이 DateTime 유효성 검사 파트와 유사하게 작동하는 것이 좋습니다. 또한 누군가가 숫자의 잘못된 문자열 표현을 입력하면 유효성 검사기의 요청을 거부하는 것이 좋습니다.

+0

Double.TryParse를 보았습니까? https://msdn.microsoft.com/en-us/library/3s27fasw(v=vs.110).aspx – sr28

+0

@ sr28'Double.TryParse'는 엄격한 형식 문자열을 제공하지 않습니다. – modiX

+0

생각해 봤는데 ... "지정된 스타일 * 및 문화권 특정 형식의 숫자 문자열 표현을 해당 배정 밀도 부동 소수점 숫자" – sr28

답변

0

미안 해요, 난 ... 나는 이것이 당신이 언급 한 세 가지 경우를 처리합니다 생각 ... 제대로

string input = "12.00"; 

double validationCheck = Convert.ToDouble(input); 

string validationCheck1 = validationCheck.ToString("0.00", CultureInfo.InvariantCulture); 

if (input!=validationCheck1) /* Validation Failed */ ; 

를 코드를 복사하지 않았다 당신은 또한 예외를 확인해야합니다.

+0

"으로 변환합니다. 죄송합니다 - 지금 코드를 수정했습니다. –

관련 문제