考虑到每个符号总是在字符串的开头或结尾,我们希望在每个sgin之前或之后给一个空格,以便作为一个单词:
所需的结果被注解,如您所见,我的函数有问题:
modify('you always have to wake up?'); // you always have to wake up ?
modify('...you always have to wake up'); // ... you always have to wake up
modify('...you always have to wake up?!'); // ... you always have to wake up ?!
function modify(string) {
const sgins = ['?', '!', '...', '?!', '!?', '!!', '.'];
for (let a = 0; a < sgins.length; a++) {
const split = string.split(sgins[a]);
string = string.replaceAll(sgins[a], ` ${sgins[a]} `).trim();
}
console.log(string);
}
字符串
你会怎么做?
3条答案
按热度按时间6tr1vspr1#
你可以使用一个简单的正则表达式:
字符串
表示将所有连续的
?!.
字符替换为字符串开头的字符加空格。最后也是一样。型
如果你需要精确的前缀,你可以构建regexp:
型
new9mtju2#
首先,我不会使用split()对你说实话。我会这样写,但这不是最佳代码。这是不是所有情况下,我不得不更换一些迹象你的阵列工作.如果你想让它完美,那么你必须为很多不同的情况编写程序,所以代码会更大一些。例如,如果已经有空间了呢?等等
字符串
6l7fqoea3#
作为替代方案,您可以使用带有全局匹配
/g
的模式和2个捕获组。在回调函数中,检查组1或组2是否要在前面或后面添加空格。
字符串
型