2011-11-02 2 views
1

형식 문자열이 유효한지 확인하는 쉬운 방법이 있습니까? 예를 들어 다음은 숫자 형식 문자열을 테스트하는 데 사용하는 코드입니다.FormatString을 확인하는 쉬운 방법은 유효합니까?

public static bool IsValidFormatStringNumber(string FormatString) 
{ 
    try 
    { 
     const decimal number = 0.056m; 
     var formattedNumber = number.ToString(FormatString); 
     return formattedNumber.Length > 0; 
    } 
    catch 
    { 
     return false; 
    } 
} 

예외를 catch하거나 결과 문자열에 길이가 없는지 확인하려고합니다. 그러나이 테스트는 "hsibbur"형식의 문자열 (모든 쓰레기)이 길이가있는 "hsaibbur"문자열로 결과에 따라 실패합니다.

백분율 및 날짜 형식 문자열에 대해 동일한 테스트를 수행하려고합니다.

+0

기본적으로 'x = 1; if (x! = 1) throw 오류;'와 같은 기본 유형에서'toString'을 검사하고 있습니까? 당신이 문자열 형식을 테스트 할 필요가있을 정도로 세밀하게 보이지는 않습니다. (뭔가 빠졌거나 더 나은 반올림이 필요하지 않거나 ...) - EDIT : 가능한 IFormatProviders를 시도하고 있습니까? ? –

+4

"hsibbur"형식 문자열이 유효합니다! –

+1

또한, 단지'FormatException' 잡기는 어떨까요? _real_ 예외가 생길 수 있습니다. –

답변

2

standard format strings 만 확인하려면 형식 문자열이 해당 목록의 일부인지 확인하십시오.

custom format strings ("기타"또는 "리터럴 문자열"이 아닌)을 확인하려면 해당 정규 표현식을 작성해야합니다. 그 외에는

, 형식 문자열이 임의 문자열을 할 수 있기 때문에, 나는 검증도 를 적용 생각하지 않습니다.

+0

고마워요. 마지막 요점은 좋은 점이며 사용자가 유효한 항목을 입력하게하려는 주된 이유 중 하나입니다. 형식 문자열을 입력 할 수는 있지만 예외가 더 많이 발생합니다. 올바른/유효한 형식 문자열을 적용하는 것이 좋습니다. – paligap

1

FormatString이 formattedNumber와 같은 경우 false를 반환하는 다른 경우 일 수 있습니다.

관련 문제