首页 > 解决方案 > 用三点获得所需的图案

问题描述

我想要这样的模式作为输出:

"I was sent ... to protect you."

三点前后没有一个空格。无论我们是否有以下每个输入,我都希望始终获得这种模式:

“我被派来……保护你。”

“我被派来……保护你。”

“我被派来……保护你。”

我用replace了三遍来实现这一点,但看起来很难看。我必须学习更聪明的解决方案吗?

注意:如果我们没有任何三点,我们不想改变任何东西。

标签: javascript

解决方案


您可以使用正则表达式对(\.{3})由 0 个或多个空白字符 ( \s*) 包围的三个连续点进行分组。然后,您可以将其替换为两边由空格包围的分组点 ( ' $1 ')。

const dotify = str => str.replace(/\s*(\.{3})\s*/g, ' $1 ');
console.log(dotify("I was sent... to protect you.")); // I was sent ... to protect you.
console.log(dotify("I was sent ...to protect you.")); // I was sent ... to protect you.
console.log(dotify("I was sent...to protect you.")); // I was sent ... to protect you.
console.log(dotify("I was sent ... to protect you.")); // I was sent ... to protect you.


推荐阅读