Javascript 用单反斜杠替换双反斜杠

Javascript replacing double backslashed with single backslash

我一直在浏览很多解决方案,但不知何故没有任何工作。

我需要将以下字符串:"i:0#.w|dev\tauri;" 替换为 "i:0#.w|dev\tauri;"

我试过用下面的JS代码来替换:

s.replace(/\\/g, "\");

s.replace(/\\/g, "\");

但是一直没有结果。然而下面用 "

替换了我的 \
s.replace(/\/g, "\"");

老实说,我真的对这个逻辑感到困惑,似乎应该使用 \\ 进行双反斜线处理,但它似乎只使用 \ 进行两个反斜线处理..

我需要执行此操作以比较当前 Sharepoint 用户 (i:0#.w|dev\tauri) 是否在列表中。

更新:

好的,我用了console.log();之后,发现了一个有趣的东西

编码:var CurrentUser = "i:0#.w|dev\tauri"; 和 console.log():i:0#.w|dev auri...

C#代码如下:

SPWeb theSite = SPControl.GetContextWeb(Context);
SPUser theUser = theSite.CurrentUser;
return theUser.LoginName;

JavaScript strings need to be escaped 所以如果你得到一个带有两个反斜杠的字符串文字,JavaScript 将它解释为只有一个。在你用来比较的字符串中,你有 \t,这是一个制表符,而你可能想要的是 \\t。我的猜测是,无论您从何处获取当前 SharePoint 用户,它都会被正确转义,但您的比较列表却没有。

编辑:

或者反过来。如果您使用的是 .NET 4+ JavaScriptStringEncode 可能会有帮助。如果您仍然遇到问题,向我们展示您是如何进行比较的可能会有所帮助。