Преобразование римской цифры в целое число с использованием Javascript
У меня есть массив, который выводится как римское число:
var details = lst_details[sltindex].split(';');
detail[9];//is roman number and I want it as an integer;
Массив details[9]
является римской цифрой, поэтому я хочу преобразовать его в целое число. Кто-нибудь знает, помогите мне, пожалуйста, спасибо.
1 ответ
Решение
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);