regex - Bir stringden javascript unicode karakteri 8206'yı kaldırma


Ben hâlâ JavaScript konusunda yeniyim (önceden VB.NET'tim) ve dili kavramaya çalışıyorum. JavaScript'te dolaştırdığım bir stringin bir şekilde içerisindeki Unicode kaçış karakterlerini (0x5206, soldan sağa işaretleyici) içerdiği bir problemim var ve bu karakterleri temizlemem gerekiyor. Bunu, Unicode karakterinin varlığını kontrol eden ve onu temizleyen basit bir döngü ile yapabilirim, ama bunu bir .replace(regex) ile yapabilmem gerekir. Ancak birkaç saat denedikten sonra buna yardım almam gerekiyor (regex'i ilk kez kullanıyorum).

// 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;
}

Yukarıdaki kodda, tempStr ve stripStr doğru tarihi verir ama tryRegEx vermez (Unicode kaçış karakteri temizlenmediği için geçersiz tarih alıyor). Regex ifadesinin doğru olduğundan oldukça eminim, bu yüzden regex neden benim için çalışmıyor pek bilmiyorum (böylece döngüyü atlayabilirim).

Her türlü ipucu için teşekkürler. Burada temel bir şeyi gözden kaçırdığıma eminim... :-)

Cevap #1

5206 mı yoksa 8206 mı? Birini seç :) Eğer 8206 ise, \E istiyorsunuz (8206 onaltılık). Eğer 5206 ise, \u1456 istiyorsunuz