2014-02-19 1 views
5

정수의 정규 표현은 ASCII 10 진수 문자의 시퀀스이며 숫자가 음수 인 경우에만 접두사 '-'가 붙습니다. 표현되는 숫자가 0 인 경우를 제외하고는 초기 '0'이 없습니다..NET 문화권에서는 정수의 정규 표현을 다르게 처리합니까?

쉼표, 통화 기호, 공백, 단위, 소수점 등을 포함한 다른 문자는 없습니다. int. TryParse가 주어진 경우 불변의 문화권에 다른 값을 반환하는 모든 .NET 문화권이 있습니까? 정수의 정규 표현을 포함한 캐릭터 라인

없으면 .NET은 앞으로 추가 될 수있는 문화권이 계속 이런 식으로 행동 할 것이라고 보장합니까?

다른 방법으로 말하자면 ... int.TryParse를 호출 할 때 불변의 문화권을 지정해야합니까?이 입력에 대해서만 신경 써야합니까?

+0

쉼표와 같은 수천 개의 구분 기호는 어떻습니까? 여기에 .net'NumberStyles' 플래그를 포함 시키시겠습니까? –

+1

'InvariantCulture'가 당신이 원하는대로하기 때문에, InvariantCulture를 지정하거나 b) 다른 프로그래머에게 문화를 지정하지 않을 것인가? "봐, 나는 내가 할 수 있기 때문에 InvariantCulture를 지정하는 것을 피했다"는 코멘트와 이에 대한 링크가 결국 대답 된 질문입니까? 나는 (a) 실제로 전체적으로 타이핑하는 것이 적다라고 생각한다. –

+0

네 개의 매개 변수 int.TryParse는 두 개의 매개 변수 양식보다 더 많은 타이핑 방법입니다. 인간이 입력하는 것보다 기계 생성 문자열에만 관심이 있다면 두 매개 변수 형식이 좋습니다. (아니면이 질문입니다.) 물론, 나는 그것을 유틸리티 클래스에 추가 할 수 있지만, 필요한 것입니까? – billpg

답변

3

심지어 음수 부호는 문화에 따라 다른 옵션이 있습니다. 당신이

var numbers = from c in CultureInfo.GetCultures(CultureTypes.AllCultures) 
       group c by c.NumberFormat.NumberNegativePattern into g 
       select g; 

다음 검사 numbers을 할 경우 어떤 문화권 예를 문화 lo 또는 lo-LA를 들어, 음의 부호에 대해 다른 옵션을 사용하는 것이 당신이 볼 수 있습니다.


대략적으로 사용자에게 표시하는 것을 제외하고는 모든 용도로 CultureInfo.InvariantCulture을 사용합니다.

+0

"Lo"와 "lo-LA"모두에서 TryParse가 행복하게 -123을 반환하는 "-123"을 허용했습니다. – billpg

+0

@billpg 맞습니다.하지만 TryParse 메서드에서 NumberStyles.Any를 사용했을 것입니다. 'Int32.TryParse ("(123)", NumberStyles.Any, new CultureInfo ("en-US"), 결과 출력)도'-123'을 반환합니다. 반면에'Int32.Parse ("(123)", new CultureInfo ("lo"))'는 예외를 던지지만, 이해할 수있는 한'-123'이됩니다. – Dirk

+0

나는 http://dotnetfiddle.net/8GaXlh를 사용했다. – billpg

관련 문제