letra - JavaScript no puede convertir números hindi/árabes a variables numéricas reales
title css (2)
Bueno, la función Number
espera los dígitos del 0 al 9 y no maneja los árabes. Necesitarás cuidarte tú mismo:
function parseArabic(str) {
return Number( str.replace(/[٠١٢٣٤٥٦٧٨٩]/g, function(d) {
return d.charCodeAt(0) - 1632; // Convert Arabic numbers
}).replace(/[۰۱۲۳۴۵۶۷۸۹]/g, function(d) {
return d.charCodeAt(0) - 1776; // Convert Persian numbers
}) );
}
Uso:
> parseArabic("۱۶۶۰")
1660
Estoy tratando de usar un DOM proveniente de una fuente externa, y en él hay algunos valores numéricos en la transcripción hindi / árabe, como "۱۶۶۰"
, y cuando quiero convertirlo en valor numérico obtengo NaN
. ¿Qué está mal aquí?
Un pequeño fragmento de código para ser probado:
alert(Number("۱۶۶۰") + '' - '' + Number("1660"));
Le sugiero que lo maneje a un nivel inferior: reemplace los dígitos en árabe con los dígitos ASCII correspondientes y luego convierta.
Por ejemplo:
>a=''/u0661/u0666/u0666/u0660''
"١٦٦٠"
>b=''/u06f1/u06f6/u06f6/u06f0''
"۱۶۶۰"
>r=/[/u0660-/u0669/u06F0-/u06F9]/g;
/[/u0660-/u0669/u06F0-/u06F9]/g
>a.replace(r,function(c) { return ''0123456789''[c.charCodeAt(0)&0xf]; } )
"1660"
>b.replace(r,function(c) { return ''0123456789''[c.charCodeAt(0)&0xf]; } )
"1660"