你好,我正在做类似 how to replace dots inside quote in sentence with regex 的事情
var string = 'Lorem ipsum dolor sit amet, consectetur adipiscing elit. "Vestibulum interdum dolor nec sapien blandit a suscipit arcu fermentum. Nullam lacinia ipsum vitae enim consequat iaculis quis in augue. Phasellus fermentum congue blandit. Donec laoreet, ipsum et vestibulum vulputate, risus augue commodo nisi, vel hendrerit sem justo sed mauris." Phasellus ut nunc neque, id varius nunc. In enim lectus, blandit et dictum at, molestie in nunc. Vivamus eu ligula sed augue pretium tincidunt sit amet ac nisl. "Morbi eu elit diam, sed tristique nunc."';
// seperate the quotes
var quotes = string.match(/"(.)+?"/g);
var test = [];
// for each quotes
for (var i = quotes.length - 1; i >= 0; i--) {
// replace all the dot inside the quote
test[i] = quotes[i].replace(/\./g, '[dot]');
};
console.log(test);
假设我们已经使用正则表达式进行了更改,但我一直困惑于如何将其连接回现有的 var string
,因为我的结果在 var test
中分开> ?或者有更好的方法吗?
输出应该类似于
Lorem ipsum dolor sit amet, consectetur adipiscing elit. "Vestibulum interdum dolor nec sapien blandit a suscipit arcu fermentum[dot]Nullam lacinia ipsum vitae enim consequat iaculis quis in augue[dot] Phasellus fermentum congue blandit[dot] Donec laoreet, ipsum et vestibulum vulputate, risus augue commodo nisi, vel hendrerit sem justo sed mauris[dot]" Phasellus ut nunc neque, id varius nunc. In enim lectus, blandit et dictum at, molestie in nunc. Vivamus eu ligula sed augue pretium tincidunt sit amet ac nisl. "Morbi eu elit diam, sed tristique nunc[dot]"
*ps 我不确定标题是否正确
谢谢
最佳答案
您可以直接在 "
处拆分,在每隔一个数组元素中进行替换,然后再次加入:
var parts = string.split('"');
for (var i = 1; i < parts.length; i += 2) {
parts[i] = parts [i].replace(/\./g, '[dot]');
};
string = parts.join('"');
自 split
将在索引 0
创建一个空字符串如果字符串以 "
开头这应该适用于所有情况。
请注意尾随不匹配 "
的边缘情况将导致之后的每个点 "
也要被替换。如果您不想这样做,只需更改 for
条件为i < parts.length - 1
.
关于javascript - 连接由不同正则表达式匹配分隔的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13140815/