如何在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
相关产品推荐
相关产品推荐

