You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将字符串安全序列化为JavaScript反引号字符串?

如何将字符串安全序列化为JavaScript反引号字符串?

我们需要实现一个函数,将任意字符串安全转换为JavaScript的反引号模板字符串,要求保留原字符串的格式(比如换行),同时正确处理特殊字符,避免生成的代码出现语法错误。对比JSON.stringify(用于生成双引号字符串),我们需要对应的反引号版本。

示例代码

function stringToDoubleQuote(str: string) {
  return JSON.stringify(str)
}

function stringToBackQuote(str: string) {
  // 需要实现的逻辑
}

测试用例

const quotelist = `- 'singlequote'
- "doublequote"
- \`backquote\`
- template: ...\${0}...$\{1}...`
console.log('(A)', stringToDoubleQuote(quotelist))
console.log('(B)', stringToBackQuote(quotelist))

预期输出

(A) "- 'singlequote'\n- \"doublequote\"\n- `backquote`\n- template: ...${0}...${1}..."
(B) `- 'singlequote'
- "doublequote"
- \`backquote\`
- template: ...\${0}...\${1}...`

实现方案

核心是转义两个关键字符/序列:

  • 反引号():必须转义为`,否则会提前结束模板字符串
  • 模板表达式起始符(${):必须转义为\${,否则会被当作JS表达式解析

对应的函数实现:

function stringToBackQuote(str: string) {
  // 先转义反引号,再转义${
  const escapedStr = str.replace(/`/g, '\\`').replace(/\${/g, '\\${');
  return `\`${escapedStr}\``;
}

使用场景

这个需求常见于将CSS文件转换为JS模块的场景:为了保持输出代码的可读性,避免生成满是\n转义的长双引号字符串,使用反引号模板字符串可以保留原CSS的换行和格式,大幅提升代码的可维护性。

内容的提问来源于stack exchange,提问作者Yukulélél

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.01 12:28:17