下面是一个函数,它可以用^
符号 Package 一个符号数组,它对string1
很有效,让我们来看看:
function modifyAuto(string) {
const allSigns = ['!!', '?!', '!?', '...', '..', '.', '?', '؟!', '!؟', '!', '؟', '،', '؛', ','];
const str = allSigns.map(e => e.replace(/\?/g, '\\?').replace(/\./g, '\\.')).join('|');
const regex = new RegExp(`\\s*(?:\\^\\s*)*(${str})\\s*(?:\\^\\s*)*`, 'g');
return string.replace(regex, ' ^$1^ ');
}
const string1 = 'this is a text, right';
const string2 = 'this is a text, ^right^';
console.log('works fine :::', modifyAuto(string1))
console.log('one of the ^ signs removed :::', modifyAuto(string2))
正如你所看到的,对于一个普通的string1
,这个函数工作得很好,但是正如你所看到的,在string2
中,如果已经有一个单词用^
Package ,例如靠近,
符号,那么^
中的一个将被删除。
对于string2
的期望结果应该是:
"this is a text ^,^ ^right^"
您将如何解决此问题?
1条答案
按热度按时间91zkwejq1#
然后,仅删除所找到的匹配项之前/之后的
^
请参见固定演示: