首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >字符“with the characters \”的Javascript .replace()

字符“with the characters \”的Javascript .replace()
EN

Stack Overflow用户
提问于 2015-03-17 02:15:56
回答 1查看 684关注 0票数 0

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

代码语言:javascript
复制
string jsonString = '{"name":"Tim"}'

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

代码语言:javascript
复制
string jsonStringEscaped = '{\"name\":\"Tim\"}'

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

为了实现这一点,我尝试在将参数发送到C#之前使用Javascript .replace()方法,为此我使用了一个简单的RegEx:

代码语言:javascript
复制
string jsonStringEscaped = jsonString.replace(/\"/g,"\\\"")

不幸的是,这会返回一些'{\\"name\\":\\"Tim\\"}'形式的东西,这对我来说是无用的。

我尝试过这个的变种:

代码语言:javascript
复制
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()参数包含在单引号'‘中,而不是双引号"“中,但没有成功。

有人能告诉我我哪里做错了吗?更好的是,有没有人能建议一种更有效的方法来实现我想要实现的目标?

EN

回答 1

Stack Overflow用户

发布于 2015-03-17 02:33:41

除非我误解了您,否则我认为您只是在尝试转义一个在regex (")中不需要转义的字符。

代码语言:javascript
复制
var jsonString = '{"name":"Tim"}'
var escaped = jsonString.replace(/"/g, '\\"');
// escaped == "{\"name\":\"Tim\"}"
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29084099

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档