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

如何替换双引号(")前后的空白字符?

替换双引号实体前后空白字符的实现方案

问题场景

现有文本及处理代码如下:

const text = 'hey : "bob " Hey    Hello'
text.replace(' "', '"').replace('" ', '"')

// 期望结果: 'hey :"bob"Hey    Hello'

需要实现替换所有双引号实体(")前后的空白字符,同时保留文本中其他位置的空白(比如Hey后的多个空格)。

解决方案

1. 全局正则替换(推荐)

原代码的问题在于replace方法仅替换第一个匹配项,无法处理多处出现的空白。使用正则表达式并添加全局标志g,可以一次性替换所有符合条件的空白:

方案A:合并正则(更简洁)

const text = 'hey : "bob " Hey    Hello'
const result = text.replace(/\s(")|(")\s/g, '$1$2')
console.log(result) // 输出: 'hey :"bob"Hey    Hello'

正则说明:

  • \s("):匹配空白字符后跟",通过捕获组保留"
  • (")\s:匹配"后跟空白字符,通过捕获组保留"
  • g:全局标志,确保所有匹配项都被替换
  • $1$2:替换为两个捕获组的内容,即保留"并去掉前后空白

方案B:拆分正则(更直观)

如果觉得合并正则难以理解,可以拆分两次全局替换:

const text = 'hey : "bob " Hey    Hello'
const result = text.replace(/\s"/g, '"') // 去掉"前的空白
                   .replace(/"\s/g, '"') // 去掉"后的空白
console.log(result) // 输出: 'hey :"bob"Hey    Hello'

2. 原代码优化

如果仅需处理单次匹配,原代码可正常运行;但要处理多处匹配,只需给replace的第一个参数改为正则并添加g标志:

// 优化后的原写法
const result = text.replace(/ "/g, '"').replace(/" /g, '"')

内容的提问来源于stack exchange,提问作者Ahmed Elsayed

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 13:35:40