羅馬數字轉換為阿拉伯數字
阿新 • • 發佈:2019-01-10
這篇帖子我提供了一個將幾千以內的羅馬數字,轉換成阿拉伯數字的JS方法。
對於這種轉化,我認為只要注意羅馬數字的兩個特性:
1.連寫的數字重複不得超過三次,比方說要表示4,就不能是IIII,而應該是IV
2.如果小的數字,它在大的數字的左邊,那麼它所表示的數等於大數減小數得到的數,比如:Ⅳ= 4;Ⅸ= 9
為了方便做轉化,我首先建立了一個物件對映關係,在解析的過程中作匹配
//常用羅馬/阿拉伯數字對映 var mapping = { M : 1000, CM : 900, D : 500, CD : 400, C : 100, XC : 90, L : 50, XL : 40, X : 10, IX : 9, V : 5, IV : 4, I : 1 }; function translate(roman){ var result = 0; for(var i=0;i<roman.length;){ var sub = roman.slice(i); for(var j in mapping){ if(sub.indexOf(j) == 0){ result += mapping[j]; i += j.length; break; } } } return result; } //21 console.log(translate("XXI")); //1990 console.log(translate("MCMXC")); //2008 console.log(translate("MMVIII")); //1666 console.log(translate("MDCLXVI"));