【问题标题】:Unicode supported isNumeric() function in JavaScript and VBScriptJavaScript 和 VBScript 中支持 Unicode 的 isNumeric() 函数
【发布时间】:2011-09-13 11:38:34
【问题描述】:

我无法为 javaScript 和 VBScript 找到支持 Unicode 的 isNumeric() 函数。函数在那里,但不支持 unicode。

即使没有支持 Unicode 的版本,是否有任何两种语言的 API 都支持 isNumeric() 或 isDigit() 功能?

【问题讨论】:

  • 你能举一个失败的例子吗?
  • Javascript 在不同的语言/奇怪字符上表现得很好,所以也许你只需要一个好的 isNumeric 函数实现,就像这里的 stackoverflow.com/questions/18082/…
  • isNaN()怎么样?

标签: javascript html unicode internationalization vbscript


【解决方案1】:

几周前我遇到了同样的问题,我使用的解决方案是根据可能定义数字的 unicode char 代码范围检查我的字符代码。

他们在这里(范围来自 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 范围的一部分,所以没关系。

【讨论】:

  • 这是一个很长的过程。我得到的是,如果我需要 300 种语言的 isNumeric() 函数,我必须检查所有代码范围......呃......那会很忙的家伙! :(
  • 那些应该是所有在unicode中定义的数字范围。每种语言都没有自己的数字范围!编辑:如果您认为 JavaScript 中有一个内置的 isNumeric 函数或等效函数可以做到这一点,我担心您错了......并且 no 代码使用强制转换为整数,如 "(input - 0) == 输入”将起作用。
  • 哦,是的,你可能是对的。有几个数字代码需要检查...谢谢。这可能会解决我的问题。
猜你喜欢
  • 2016-03-30
  • 1970-01-01
  • 2014-04-19
  • 1970-01-01
  • 2014-05-12
  • 2012-12-27
  • 2017-12-04
  • 2013-07-03
  • 1970-01-01
相关资源
最近更新 更多