字符 "with the characters\"的 Javascript .replace()

标签 javascript c# json

我正在尝试将 JSON 字符串作为命令行参数从 Javascript 作为 node.js 子进程传递给 C# .exe。为了便于论证,我的 JSON 看起来像这样:

string jsonString = '{"name":"Tim"}'

将其作为 C# 参数传递的问题是,如果我希望在 C# 代码中解析它,则必须保留双引号。因此,我需要传递到 C# 命令行的内容需要如下所示,其中我转义了双引号:

string jsonStringEscaped = '{\"name\":\"Tim\"}'

这样做的动机是它允许我在两种语言之间保持一致的对象结构,这显然对我来说是非常理想的。

为了实现此目的,我尝试在将参数发送到 C# 之前使用 Javascript .replace() 方法,为此我使用了一个简单的正则表达式:

string jsonStringEscaped = jsonString.replace(/\"/g,"\\\"")

不幸的是,这会返回 '{\\"name\\":\\"Tim\\"}' 形式的内容,这对我来说毫无用处。

我尝试过一些变体:

string jsonStringEscaped = jsonString.replace(/\"/g,"\\ \"")
\\ returns '{\\ "name\\ ":\\ "Tim\\ "}'

string jsonStringEscaped = jsonString.replace(/\"/g,"\\\\")
\\ returns '{\\\\name\\\\:\\\\Tim\\\\}'

string jsonStringEscaped = jsonString.replace(/\"/g,"\\\")
\\ is invalid

string jsonStringEscaped = jsonString.replace(/\"/g,"\\\ ")
\\ returns '{\\ name\\ :\\ Tim\\ }'

我尝试过将第二个 .replace() 参数包含在单引号 '' 而不是双引号 ""内的变体,但没有成功。

谁能告诉我我做错了什么?更好的是,任何人都可以建议一种更有效的方法来实现我想要实现的目标吗?

最佳答案

除非我误读了你,否则我认为你只是想转义一个不需要在正则表达式中转义的字符(“)。

var jsonString = '{"name":"Tim"}'
var escaped = jsonString.replace(/"/g, '\\"');
// escaped == "{\"name\":\"Tim\"}"

关于字符 "with the characters\"的 Javascript .replace(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29084099/

相关文章:

Javascript 映射嵌套元素

c# - 无法加载文件或程序集“Microsoft.Practices.EnterpriseLibrary.Caching”

C# bit shift : is this behavior in the spec, 是一个错误,还是偶然的?

Javascript 将字符串转换为哈希值

java - 将 JSON 对象映射到 Hibernate 实体

json - 使用 unicode 字符解析 JSON 时出现 SwiftyJSON 问题

javascript - 在 AngularJS ng 类中链接多个表达式

javascript - 过渡不适用于元素

Javascript向倒数计时器添加暂停选项不起作用

c# - 有更好的方法吗? ASP.NET/C#/代码隐藏