2011-09-13 7 views
0

JavaScriptおよびVBScriptのUnicodeでサポートされているisNumeric()関数が見つかりません。関数は存在しますが、Unicodeはサポートされていません。JavaScriptおよびVBScriptのUnicode()関数のサポート

Unicodeでサポートされているバージョンがない場合でも、isNumeric()またはisDigit()機能をサポートする両方の言語でAPIがありますか?

+0

何が失敗したかの例を挙げることができますか? –

+0

Javascriptはさまざまな言語や奇妙な文字でかなりうまく動作するので、ここのようなisNumeric関数の良い実装が必要なのかもしれません。http://stackoverflow.com/questions/18082/validate-numbers-in-javascript-isnumeric/ 174921#174921 – WTK

+0

どのような使用[isNaN()](https://developer.mozilla.org/ja/JavaScript/Reference/Global_Objects/isNaN)? –

答えて

2

私は数週間前に同じ問題に遭遇しました。私が使用したソリューションは、文字コードを数字を定義する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) 
} 

、タミル語、「1」である0x0BE7、参照のための文字コードにhttp://www.fileformat.info/info/unicode/char/BE7/index.htmであり、範囲0x0BE6 => 0x0BEFの一部であることがわかりますので、これはOKです。

+0

これは非常に長い手順です。私が得るのは、300言語のisNumeric()関数が必要な場合、私はすべてのコード範囲をチェックする必要があります。... urgh ......それは忙しい男でしょう! :( –

+0

これらはすべて*ユニコードで定義されている数字の範囲であるはずです*すべての言語は独自の数字範囲を持っていません!編集:これを行うjavascriptに組み込みのisNumeric関数または同等の関数があると思うなら、私はあなたが間違っていることを恐れています...そして、 "(input - 0)== input"のようなintへのキャストを使用するコードはありません – Shautieh

+0

Oはい、おそらく正しいでしょう。確かめるために...ありがとう、それは私の問題を解決するかもしれない。 –

関連する問題