我无法为javaScript和VBScript找到支持Unicode的isNumeric()函数。功能在那里,但不支持unicode。
即使没有支持Unicode的版本,那么两种语言中是否有支持isNumeric()或isDigit()功能的API?
答案 0 :(得分:2)
几个星期前我遇到了同样的问题,我使用的解决方案是根据可能定义数字的unicode字符代码范围检查我的字符代码。
他们在这里(范围来自PERL来源,因为他们已经完成了工作!!):
var isDigit = function(ch)
{
var iCode = ch.charCodeAt(0)
return ( 0x0030 <= iCode && iCode <= 0x0039 )
|| ( 0x0660 <= iCode && iCode <= 0x0669 )
|| ( 0x06F0 <= iCode && iCode <= 0x06F9 )
|| ( 0x0966 <= iCode && iCode <= 0x096F )
|| ( 0x09E6 <= iCode && iCode <= 0x09EF )
|| ( 0x0A66 <= iCode && iCode <= 0x0A6F )
|| ( 0x0AE6 <= iCode && iCode <= 0x0AEF )
|| ( 0x0B66 <= iCode && iCode <= 0x0B6F )
|| ( 0x0BE6 <= iCode && iCode <= 0x0BEF )
|| ( 0x0C66 <= iCode && iCode <= 0x0C6F )
|| ( 0x0CE6 <= iCode && iCode <= 0x0CEF )
|| ( 0x0D66 <= iCode && iCode <= 0x0D6F )
|| ( 0x0E50 <= iCode && iCode <= 0x0E59 )
|| ( 0x0ED0 <= iCode && iCode <= 0x0ED9 )
|| ( 0x0F20 <= iCode && iCode <= 0x0F29 )
|| ( 0x1040 <= iCode && iCode <= 0x1049 )
|| ( 0x17E0 <= iCode && iCode <= 0x17E9 )
|| ( 0x1810 <= iCode && iCode <= 0x1819 )
|| ( 0x1946 <= iCode && iCode <= 0x194F )
|| ( 0x19D0 <= iCode && iCode <= 0x19D9 )
|| ( 0xFF10 <= iCode && iCode <= 0xFF19 )
|| ( 0x104A0 <= iCode && iCode <= 0x104A9 )
|| ( 0x1D7CE <= iCode && iCode <= 0x1D7FF )
}
例如,在泰米尔语中,“one”的字符代码是0x0BE7,参见http://www.fileformat.info/info/unicode/char/BE7/index.htm,您可以看到它是范围0x0BE6 =&gt;的一部分。 0x0BEF所以这是好的。