Javascript 转义字符串作为单引号字符串

Javascript 转义字符串作为单引号字符串,javascript,Javascript,我有一个字符串,我想将其编码为一个带引号的Javascript字符串。 换句话说,我想要一个函数asSingleQuotedString,这样: > console.log(asSingleQuotedString("Hello \"friend\" it's me.")) 'Hello "friend" it\'s me' 我已经尝试使用了JSON.stringify(),它可以工作,但却提供了双引号字符串。这是我当前的解决方案。它的工作原理是转换为JSON格式,去掉双引号,转义单引号

我有一个字符串,我想将其编码为一个带引号的Javascript字符串。 换句话说,我想要一个函数
asSingleQuotedString
,这样:

> console.log(asSingleQuotedString("Hello \"friend\" it's me."))
'Hello "friend" it\'s me'

我已经尝试使用了
JSON.stringify()
,它可以工作,但却提供了双引号字符串。

这是我当前的解决方案。它的工作原理是转换为JSON格式,去掉双引号,转义单引号,然后用单引号替换外部双引号

// Changes a double quoted string to a single quoted one
function doubleToSingleQuote(x) {
    return x.replace(/\\"/g, '"').replace(/\'/g, "\\'").replace(/^"|"$/g, "'");
}

// Encodes a string as a single quoted string
function asSingleQuotedString(x) {
    return doubleToSingleQuote(JSON.stringify(x));
}
此方法也适用于任意数据结构,方法是使用以下方法查找所有带引号的字符串:

// Encodes as JSON and converts double quoted strings to single quoted strings
function withSingleQuotedStrings(x) {
    return JSON.stringify(x).replace(/"(?:[^"\\]|\\.)*"/g, doubleToSingleQuote);
}
如果有人想知道我为什么要这样做:它是用于从内存中提取数据,以便可以在Javascript文件中硬编码。我想要单引号字符串,因为字符串包含很多双引号(几乎没有单引号)。