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

如何在JavaScript中将"(-"与"-)"之间内容的空格替换为双连字符"--"?

在JavaScript中替换特定标识内的空格为双连字符(--)

嘿,我刚好解决过类似的需求,这里有个简洁可靠的实现方案,完全符合你的示例要求:

核心思路

我们需要精准定位所有被(-和-)包裹的内容块,然后仅替换这些块内部的空格为--。这里可以利用JavaScript的String.replace()方法结合正则表达式的捕获组和替换函数来实现。

代码实现

// 示例输入
const inputStr = "(-A room without books-) (-is like a body without a soul-)";

// 执行替换
const outputStr = inputStr.replace(/\(-(.*?)-\)/g, (fullMatch, innerContent) => {
  // 把内部内容的所有空格替换为--,再重新包裹标识
  return `(-${innerContent.replace(/\s/g, "--")}-)`;
});

console.log(outputStr);
// 输出结果: (-A--room--without--books-) (-is--like--a--body--without--a--soul-)

代码解释

  • 正则表达式/\(-(.*?)-\)/g:
    • \(- 匹配起始标识(-(转义(是因为它在正则里是特殊字符);
    • (.*?) 是非贪婪捕获组,用来提取(-和-)之间的所有内容,非贪婪模式能确保不会把多个(-...-)块合并成一个匹配;
    • -) 匹配结束标识-);
    • g 表示全局匹配,会处理所有符合规则的块。
  • 替换函数:
    • fullMatch 是整个匹配到的字符串(比如(-A room without books-));
    • innerContent 是捕获组提取出的内部内容(比如A room without books);
    • 我们对innerContent执行二次替换,把所有空白字符(\s匹配空格、制表符等)换成--,再重新用(-和-)包裹起来。

可选调整

如果你只想替换普通空格(不想替换制表符、换行符等),可以把二次替换的正则改成/ /g即可:

innerContent.replace(/ /g, "--")

内容的提问来源于stack exchange,提问作者Ramesh Kumar

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.28 16:24:07