21 javascript
我正在尝试使用来自外部源的DOM,并且在其中有一些印地语/阿拉伯语转录的数值,就像"????",当我想将它转换为数值时,我得到NaN.这有什么不对?
要尝试的一小段代码片段:
alert(Number("????") + ' - ' + Number("1660"));
Run Code Online (Sandbox Code Playgroud)
Ber*_*rgi 45
好吧,该Number函数确实期望数字0到9并且不处理阿拉伯语.你需要自己照顾:
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
}) );
}
Run Code Online (Sandbox Code Playgroud)
用法:
> parseArabic("????")
1660
Run Code Online (Sandbox Code Playgroud)
Jas*_*n S 12
我建议你在较低的级别处理它:用相应的ASCII数字替换阿拉伯数字,然后转换.
例如:
>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"
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6331 次 |
| 最近记录: |