이번에 영문문서대응 작업때문에 로마숫자의 점검용 코드를 줃었다.;;;(머리싸매서 하는것도 좋지만 시간대비 효용이..)
로마숫자에 대한 개요는 이걸 참조하고..
Roman | Alternative | Arabic | Notes |
없음 | 없음 | 0 | 0을 표시할 수 없음. |
I | Ⅰ | 1 | |
II | ⅠⅠ (or Ⅱ) | 2 | |
III | ⅠⅠⅠ (or Ⅲ) | 3 | |
IV | ⅠⅤ (or Ⅳ) | 4 | 시계 문자판 등에서는 IIII (ⅠⅠⅠⅠ)이 쓰임. |
V | Ⅴ | 5 | |
VI | ⅤⅠ (or Ⅵ) | 6 | |
VII | ⅤⅠⅠ (or Ⅶ) | 7 | |
VIII | ⅤⅠⅠⅠ (or Ⅷ) | 8 | |
IX | ⅠⅩ (or Ⅸ) | 9 | |
X | Ⅹ | 10 | |
XI | ⅩⅠ (or Ⅺ) | 11 | |
XII | ⅩⅠⅠ (or Ⅻ) | 12 | |
XIII | ⅩⅠⅠⅠ | 13 | |
XIV | ⅩⅠⅤ | 14 | |
XV | ⅩⅤ | 15 | |
XIX | ⅩⅠⅩ | 19 | |
XX | ⅩⅩ | 20 | |
XXX | ⅩⅩⅩ | 30 | |
XL | ⅩⅬ | 40 | |
L | Ⅼ | 50 | |
LX | ⅬⅩ | 60 | |
LXX | ⅬⅩⅩ | 70 | |
LXXX | ⅬⅩⅩⅩ | 80 | |
XC | ⅩⅭ | 90 | |
C | Ⅽ | 100 | 미국의 100달러 지폐를 "C-bill"이나 "C-note"라고 부르는 연유이다. |
CC | ⅭⅭ | 200 | |
CD | ⅭⅮ | 400 | |
D | Ⅾ | 500 | IↃ또는 1000 표기의 절반이란 의미에서 유래. |
DCLXVI | ⅮⅭⅬⅩⅤⅠ | 666 | 짐승의 수에는 M 이외의 다른 모든 기본 부호가 한번씩 나타난다. |
CM | ⅭⅯ | 900 | |
M | Ⅿ | 1000 | 예전엔 ↀ을 쓰기도 했다. |
MCMXLV | ⅯⅭⅯⅩⅬⅤ | 1945 | |
MCMXCIX | ⅯⅭⅯⅩⅭⅠⅩ | 1999 | IMM (ⅠⅯⅯ)이나 MIM (ⅯⅠⅯ)으로 줄여서 쓸 수 없다. |
MM | ⅯⅯ | 2000 | |
MMM | ⅯⅯⅯ | 3000 | |
ↁ | ⅠↃↃ | 5000 | I 뒤에 C를 두번 거꾸로 쓴 모양. |
이 모든걸 점검할 수 있는 식이
^M{0,4}(CM|CD|D?C{0,3})(XC|XL|L?X{0,3})(IX|IV|V?I{0,3})$
이다.
위의 코드중 특수문자에서 대응되는 범위는 1-10까지이다.
ⅰ ⅱ ⅲ ⅳ ⅴ ⅵ ⅶ ⅷ ⅸ ⅹ Ⅰ Ⅱ Ⅲ Ⅳ Ⅴ Ⅵ Ⅶ Ⅷ Ⅸ Ⅹ (일본어 비스타 폰트는 12까지 지원)
시간나면 컨버터도 만들어야겠다..
참고자료 :
http://ko.wikipedia.org/wiki/%EB%A1%9C%EB%A7%88_%EC%88%AB%EC%9E%90
http://diveintopython.org/regular_expressions/roman_numerals.html
http://stackoverflow.com/questions/267399/how-do-you-match-only-valid-roman-numerals-with-a-regular-expression
http://www.crowes-nest.com/CrowesNest/Library/RomanConv/roman.html
http://www.csharphelp.com/archives/archive144.html