Jquery 将双引号替换为仅在字符串的极端处使用单引号

Jquery 将双引号替换为仅在字符串的极端处使用单引号,jquery,Jquery,我有一根绳子 var myString = "[{"portal.home":"Home"},{"displaytag.tracking.id":"Item ID"}]"; 我希望输出为 myString = '[{"portal.home":"Home"},{"displaytag.tracking.id":"Item ID"}]'; 您可以使用.slice(): 或使用正则表达式: var newString = myString.replace(/^"|"$/g, "'"); 如果

我有一根绳子

var myString = "[{"portal.home":"Home"},{"displaytag.tracking.id":"Item ID"}]";
我希望输出为

myString  = '[{"portal.home":"Home"},{"displaytag.tracking.id":"Item ID"}]';

您可以使用
.slice()

或使用正则表达式:

var newString = myString.replace(/^"|"$/g, "'");

如果使用双引号创建字符串,则不能在其中使用未替换的双引号

你不能写字

var myString = "A "B" C";
这将是一个语法错误。但是,

var myString = "A \"B\" C";
与以下内容完全相同:

var myString = 'A "B" C';
myString
的结果值将完全相同。这不像第一个示例在最后一个字符串中包含任何转义标记。转义符仅用于帮助创建字符串,在这两种情况下,字符串都是
A“B”C
;记录时通常用双引号括起来,表示类型是字符串


因此,如果您运行
console.log(myString)
它会说
“A”B“C”
,但是
myString
的值只是
A“B”C
。这只是开发人员工具如何表示字符串的结果。字符串本身并没有说它是用双引号创建的。开发者工具也可以用特殊颜色记录值,但用双引号括起来恰好是表示字符串的传统方式。

您尝试过这样做吗?您知道,在您发布的示例中,引号不是字符串的一部分,对吗?对正则表达式是的,但它替换了所有的双引号。问题是。。我不知道双引号里会有什么内容。我从后面来end@Fabr没错。。它是一个格式错误的json。我希望它是在单引号,这将解决我的目的不确定。字符串是独立于其周围的引号的字符串(在JS中,单引号字符串和双引号字符串之间的唯一区别是其内部的转义);如果您的第一行看起来确实是这样,那么它将返回一个语法错误,这是由于转义字符串错误造成的。你发布的结果是Firebug还是别的什么?开发工具通常表示双引号之间的字符串。这将删除括号。OP似乎对字符串文字标记本身有问题。@DavidHedlund:我不确定
myString
是一个JavaScript变量,还是只是一种表示“我的字符串是”的方式。如果没有任何形式的澄清,我不能肯定。这是一个复杂的问题。我打赌这是一个误解,而不是一个实际问题。只需补充:这些“外部”引号不会影响JSON(正如您所说,如果您进行了正确的转义,它们返回的字符串值完全相同),事实上,外部引号不应是字符串
值的一部分
,否则将导致格式错误的JSON。
var myString = 'A "B" C';