-3

このPHPコードをJavaScriptに複製するにはどうすればよいですか?2-9999(シリアル番号)のような数値を取り、それをNUMBERに変換します... 2-999は、変換すると異なる値になります。

function esn_to_num($esn)
{

    if (($tmp = explode('-', $esn))) {

        if (sizeof($tmp) == 2
            && my_isnum($tmp[0])
            && my_isnum($tmp[1])
        ) {
            $esn = (($tmp[0] << 23) | $tmp[1]);
        } else {
            $esn = -1;
        }
    } else {
        $esn = -1;
    }

    return $esn;
}

以下に依存関係関数を追加しました。

// dependency function
    /*****************************************************************************
    * CHECKS IF A STRING REPRESENTS A NUMBER
    ******************************************************************************/
    function my_isnum($str, $negative=false, $decimal=false)
    {
        $has_decimal = false;
        $len = strlen($str);
        if ($len > 0) {
            $valid = true;
            for ($i=0; $valid && $i<$len; $i++) {
                if (!($str[$i] >= '0' && $str[$i] <= '9')) {
                    if ($str[$i] == '-') {
                        if (!$negative || $i != 0) {
                            $valid = false;
                        }
                    } else if ($str[$i] == '.') {
                        if (!$decimal || $has_decimal) {
                            $valid = false;
                        }
                    } else {
                        $valid = false;
                    }
                }
            }
        } else {
            $valid = false;
        }
        return $valid;
    }
4

1 に答える 1

1

phpの構文はJSと非常によく似ています。

変数を取得してを削除$し、varキーワードで宣言するだけです。

function esn_to_num(esn) {
    var tmp = [];
    if ((tmp = explode('-', $esn))) {
        if (sizeof(tmp) == 2
            && my_isnum(tmp[0])
            && my_isnum(tmp[1])
        ) {
            esn = ((tmp[0] << 23) | tmp[1]);
        } else {
            esn = -1;
        }
    } else {
        esn = -1;
    }
    return esn;
}

次に、すべてのphp関数を同等のJS関数に置き換える必要があります。explode「 、に相当するjavascript」を検索しsizeofます。

同じプロセスに従って、my_isnumjavascriptで書き直します(明らかにネイティブのphp関数ではありません)。

編集:あなたのアップデートを見た後、私はおそらくStackOverflow(または他の場所)にすでにかなりのコードがあり、それが何をするのかを理解my_isnumしています。「js関数で文字列が数値かどうかを判断する」を検索するか、ここで別の質問をしてください。

これはすべてchromesjavascriptconsoleで実行でき、エラーが発生しなくなるまで繰り返します。特定の問題が発生して行き詰まった場合は、StackOverflowでそれについて質問することをお勧めします。

于 2013-02-01T22:59:30.860 に答える