Javascript 使用三个点获得所需的图案

Javascript 使用三个点获得所需的图案,javascript,Javascript,我希望有这样一个模式作为输出: "I was sent ... to protect you." 在三个点之前和之后没有一个空格。无论我们是否有这些输入,我都希望得到这种模式: “我是被派来保护你的。” “我是被派来保护你的。” “我是被派来保护你的。” 我用了三次replace来实现这一点,但它看起来很难看。有没有更聪明的解决方案需要我学习 注意:如果我们没有任何三点,我们不想更改任何内容。您可以: .split()我被发送了。。。保护你。-->[“我是被派来的”,“保

我希望有这样一个模式作为输出:

"I was sent ... to protect you."
在三个点之前和之后没有一个空格。无论我们是否有这些输入,我都希望得到这种模式:

“我是被派来保护你的。”

“我是被派来保护你的。”

“我是被派来保护你的。”

我用了三次
replace
来实现这一点,但它看起来很难看。有没有更聪明的解决方案需要我学习

注意:如果我们没有任何三点,我们不想更改任何内容。

您可以:

  • .split()
    我被发送了。。。保护你。
    -->[“我是被派来的”,“保护你的”。
  • .trim()
    [“我被派来”、“保护你”]
    -->
    [“我被派来”、“保护你”]
  • join()。。。为了保护您
let str=“我是被派来保护你们的。”;
让str2=“我是被派来保护你们的。”;
让str3=“我是被派来……保护你们的。”;
让str4=“我是被派来保护你们的。”;
让str5=“我是被派来……保护你们的。”;
函数格式文本(txt){
返回txt.split(“…”).map(el=>el.trim()).join(“…”);
}
log(formatText(str));
log(formatText(str2));
log(formatText(str3));
console.log(formatText(str4));

log(formatText(str5))
您可以使用正则表达式对由0个或更多空格字符(
\s*
)包围的三个连续点进行分组。然后,您可以将其替换为两侧由空格包围的分组点(
“$1”

constdotify=str=>str.replace(/\s*(\.{3})\s*/g,$1');
log(dotify(“我是被派来保护你的。”);//我被派去。。。为了保护你。
log(dotify(“我是被派来保护你的。”);//我被派去。。。为了保护你。
log(dotify(“我是被派来保护你的。”);//我被派去。。。为了保护你。

log(dotify(“我是被派来保护你的。”);//我被派去。。。保护您。
使用替换仍然是最好的方法,但是您可能应该更新您的状况,以便只需一次替换即可

const regexp=/\s?\.\.\.\s?/;
const text1=“我是被派来保护你的。”
const text2=“我是被派来保护你的。”
const text3=“我是被派来保护你的。”
console.log(text1.replace(regexp,“…”))
console.log(text2.replace(regexp,“…”))
console.log(text3.replace(regexp,“…”)