Поддерживаемая Unicode функция isNumeric () в JavaScript и VBScript - PullRequest
0 голосов
/ 13 сентября 2011

Я не могу найти поддерживаемую Unicode функцию isNumeric () для javaScript и VBScript. Функции есть, но не поддерживаются в юникоде.

Даже если нет поддерживаемых версий Unicode, существует ли какой-либо API на обоих языках, поддерживающий функциональность isNumeric () или isDigit ()?

1 Ответ

2 голосов
/ 13 сентября 2011

Я столкнулся с той же проблемой пару недель назад, и решение, которое я использовал, состояло в том, чтобы проверить мой код символа по диапазонам кодов символов 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 ) }

Например, на тамильском языке код символа «один» равен 0x0BE7, ср.http://www.fileformat.info/info/unicode/char/BE7/index.htm, и вы можете видеть, что он является частью диапазона 0x0BE6 => 0x0BEF, так что все в порядке.

...