1. 程式人生 > >羅馬數字轉換為阿拉伯數字

羅馬數字轉換為阿拉伯數字

這篇帖子我提供了一個將幾千以內的羅馬數字,轉換成阿拉伯數字的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"));