使用Javascript将罗马数字转换为整数

Convert Roman Numeral to Integer using Javascript

本文关键字:转换 整数 数字 罗马 Javascript 使用      更新时间:2023-09-30

我有一个以罗马数字输出的数组:

 var details = lst_details[sltindex].split(';');
 detail[9];//is roman number and I want it as an integer;

details[9]的数组是一个罗马数字,所以我想把它转换成整数。任何知道的人请帮帮我,谢谢。

Number.prototype.toRoman= function(){
    var n= Math.floor(this),val,s= '',limit= 3999,i= 0;
    v= [1000,900,500,400,100,90,50,40,10,9,5,4,1],
    r= ['M','CM','D','CD','C','XC','L','XL','X','IX','V','IV','I'];
    if(n< 1 || n> limit) return '';
    while(i<13){
        val= v[i];
        while(n>= val){
            n-= val;
            s+= r[i];
        }
        if(n== 0) return s;
        ++i;
    }
    return '';
}
function rtonum (s){
    s= String(s).toUpperCase();
    if(s.length> 15 ||  /[^MDCLXVI]/.test(s)) return NaN;
    var L= s.length,sum= 0,i= 0,next,val,
    R={
        M:1000,D:500,C:100,L:50,X:10,V:5,I:1
    };  
    while(i< L){
        val= s.charAt(i++);
        if(!R[val]) return NaN;
        val= R[val];
        next= R[(s.charAt(i) || 'N')] || 0;
        if(next> val) val*= -1;
        sum+= val;
    }
    if(sum.toRoman()== s) return sum;
    return NaN;
}
var n=rtonum('c');
alert(n); 

从javaScript中的将数字转换为罗马数字。

jsfiddle