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,“…”)