Javascript 为什么节点不';不能正确地转义字符串?
我是Node的新手,请原谅我问了一个愚蠢的问题,但我有一个字符串:Javascript 为什么节点不';不能正确地转义字符串?,javascript,node.js,Javascript,Node.js,我是Node的新手,请原谅我问了一个愚蠢的问题,但我有一个字符串: var myString = 'DOMAIN\\username'; 我想在对象中使用它: var myObject = { owner: myString }; 因此,如果我做一个console.log(myString),它会显示'DOMAIN\username',但是当我在对象中使用它时,它似乎不会转义。myObject的输出将是: { owner: 'DOMAIN\\username } {owner:'D
var myString = 'DOMAIN\\username';
我想在对象中使用它:
var myObject = {
owner: myString
};
因此,如果我做一个console.log(myString)
,它会显示'DOMAIN\username'
,但是当我在对象中使用它时,它似乎不会转义。myObject的输出将是:
{ owner: 'DOMAIN\\username }
{owner:'DOMAIN\\username}
我尝试了双重转义,并可能将其转换为特殊字符,但没有成功。有人知道我需要做什么吗
编辑
问题是我必须在SOAP调用中使用它,因此它给出了一个错误,指出“域\用户名”不存在。我真的不需要控制台记录它,我只是想在发送调用之前看看参数是如何格式化的。我也尝试了JSON.stringify(myObject),但也没有成功。它仍以“域\用户名”的形式传输 myObject的输出将是:
{ owner: 'DOMAIN\\username }
这是因为您将它作为一个对象记录,例如通过console.log
或类似的方式,因此它向您显示了它的源代码
在
myString
变量和myObject.owner
属性中,字符串中正确地包含一个反斜杠。问题纯粹在于如何输出对象。Console.log“escapes”或者更确切地说,只是没有显示双反斜杠。请尝试JSON.stringify(myObject)
,您将看到原始字符串。@marekful:字符串中的反斜杠也会在JSON中转义。输出建议的结果是字符串{“owner”:“DOMAIN\\username”}
。这正是我想要指出的。OP询问为什么他在console.log输出中只看到一个反斜杠。请查看我的更新。您如何将数据写入SOAP调用?问题是我必须在SOAP调用中使用此项,因此它给出了一个错误,指出“域\\用户名”不存在。我真的不需要控制台记录,我只是想在发送调用之前看看参数的格式。@AndrewButler:字符串中只有一个反斜杠。如果您在SOAP调用中遇到问题,您需要查看如何将字符串写入SOAP内容。简单地输出字符串不会导致反斜杠重复。@AndrewButlerconsole.log
的问题是util.format
(即)转义作为对象属性一部分的字符串。比较util.format(“a\\b”)
=>“a\\b”
和util.format({a:“b\\c”})
=>“{a:\'b\\\\c\}”
。问题实际上来自format
使用的util.inspect
。尝试用var oldspect=util.inspect覆盖inspect
;util.inspect=function(){process.stdout.write(“调用了inspect\n”);oldspect.call(this,arguments)}
如果inspect
导致问题,则调用invstigate。