2015-01-30 6 views
1

나는 Char.IsNumber 함수가 로마 숫자 (다른 것들 중에서)를 숫자로 받아 들였다는 것을 알아 챘다. https://msdn.microsoft.com/en-us/library/y8t708dh%28v=vs.110%29.aspxVB.Net - Char.IsNumber 입력 로마 숫자

로마 숫자는 문자열 ("III", "IV") 또는 문자 ("V", "X")가됩니다. 어떻게 로마 숫자를이 메소드에 입력하여 사실로 되돌릴 수 있습니까?

우리는 숫자로 생각하지 않을 수있는 다른 항목을 입력 할 수 있습니다. 숫자 기호 (#)는 예를 들어 발견 한 Char.IsSymbol 메서드에서 false를 반환합니다.

+2

Microsoft의 backcompat은 전설적입니다. 그러나 아니요, Char.IsNumber ("V"c)는 False를 반환합니다. U + 2164와 같이 유니 코드의 전용 글리프를 사용해야 작동합니다. 일명 "Ⅴ"c. –

답변

4

그러나 로마 숫자 문자열이 될 것입니다 ("III", "IV") ... 일반적으로

, 당신은 로마 숫자 string의하지 char의 경향이 있음을 정확합니다.

그러나, 어떤 특정 로마 숫자 — Ⅰ, Ⅱ, Ⅲ, Ⅳ, ... Ⅻ, Ⅼ, Ⅽ, Ⅾ, Ⅿ뿐만 아니라 그들의 소문자 버전 — 유니 다하고있다 (비 대리) 코드 포인트 . 나는 방금 그들을 사용했다! 자세한 내용은 다음 리소스를 참조하십시오.

참고 한 .NET System.Char에 맞는 등.

...이 메소드에 로마 숫자를 입력하면 어떻게 되나요? 여기

은 VB.NET의 예는 다음과 같습니다

Dim romanNumeralFour As Char = ChrW(&H2163)  ' or: "Ⅳ"c 
Assert.IsTrue(Char.IsNumber(romanNumeralFour)) 

그리고 여기에 C# 버전입니다 : Hans Passant commented above처럼

const char romanNumeralFour = '\u2163';   // or: 'Ⅳ' 
Assert.IsTrue(char.IsNumber(romanNumeralFour)); 

, 당신이 사용하는 경우이 작동하지 않습니다 라틴 문자, 예 : M; 로마 숫자 은 다른 문자 일 수 있습니다 (표시 글꼴에 따라 다름).

그 밖의 무엇이 입력 될 수 있는지 궁금합니다. 숫자로 간주되지 않을 수도 있습니다.

그 방법은 이러한 유니 코드 문자 범주에서 모든 문자에 대한 True를 반환한다고 :

+0

고마워요! 나는이 questing을 요구 한 후에 공정한 조금의 연구를했다. 나는 테스트를 생성하고이 사이트를 사용했다. http://rishida.net/tools/conversion/ 유니 코드를 Decode 코드로 변환 할 수 있도록 ChrW()에 넣을 수있다. .Net이 Counting-Rod 숫자를 숫자로 간주하는지 궁금합니다. - http://en.wikipedia.org/wiki/Numerals_in_Unicode#Counting-rod_numerals –

관련 문제