2013-09-22 104 views
2

我对JavaScript(以前的VB.NET)还不熟悉,并且正在处理该语言。我有一个问题,我在JavaScript中传递的字符串以某种方式得到了Unicode转义字符(0x5206,从左到右的标记),我需要将其去掉。我可以用一个愚蠢的循环来检查unicode字符的存在并将其删除,但我应该可以使用.replace(regex)来做到这一点。然而,几个小时后,我需要帮助(第一次做正则表达式)。从字符串中剥离javascript unicode字符8206

// 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转义字符不剥离出来无效的日期)。我相当肯定正则表达式是正确的,所以不太确定为什么正则表达式不适合我(所以我可以放弃循环)。

感谢您的指点。我确定我在这里忽略了一些基本的东西...... :-)

回答

3

5206 or 8206?选择一个:)如果是8206,则需要\u200E(十六进制中的8206)。如果它是5206你想\u1456

+0

啊 - 我看到的问题,我不习惯于Unicode字符,并假设他们是2个独立的字节(82 + 06 dec或52 + 06十六进制),当他们不是(200E十六进制= 8206十进制)。这是我错过的。谢谢! – deandob