5

私はまだ JavaScript (以前は VB.NET) に不慣れで、この言語に慣れてきました。JavaScript で渡している文字列に、取り除かなければならない Unicode エスケープ文字 (0x5206、左から右へのマーク) が含まれているという問題があります。Unicode 文字の存在をチェックしてそれを取り除くダム ループでこれを行うことができますが、.replace(regex) でこれを行うことができるはずです。しかし、数時間試した後、助けが必要です(正規表現を初めて行う)。

// Convert from JS date format to dotnet ticks
function getNetDateTime(JSDate, dateortime) {
    var convStr = JSDate.toLocaleString();
    var tryRegEx = convStr.replace(/\u5206/g, "");
    var tempStr = "1/01/2000 10:00:00 AM";
    var stripStr = "";
    for (var i = 0; i < convStr.length; i++) {
        if (convStr.charCodeAt(i).toString() != "8206") stripStr = stripStr + convStr.charAt(i);
    }
    alert(new Date(tempStr).toString());
    alert(new Date(tryRegEx).toString());
    alert(new Date(stripStr).toString())
    var datetime = ((new Date(stripStr).valueOf() + unixEpoc) * pcTicks).toString();
    return datetime;
}

上記のコードでは、tempStr と stripStr は正しい日付を提供しますが、tryRegEx は提供しません (Unicode エスケープ文字が取り除かれていないため、無効な日付を取得します)。正規表現が正しいと確信しているので、正規表現が機能しない理由がよくわかりません(ループを捨てることができます)。

ご指摘ありがとうございます。ここで基本的なことを見落としていると確信しています... :-)

4

1 に答える 1