javascript - 用三点获得所需的图案
问题描述
我想要这样的模式作为输出:
"I was sent ... to protect you."
三点前后没有一个空格。无论我们是否有以下每个输入,我都希望始终获得这种模式:
“我被派来……保护你。”
“我被派来……保护你。”
“我被派来……保护你。”
我用replace
了三遍来实现这一点,但看起来很难看。我必须学习更聪明的解决方案吗?
注意:如果我们没有任何三点,我们不想改变任何东西。
解决方案
您可以使用正则表达式对(\.{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.
推荐阅读
- python - 在将文本传递到斯坦福 NER 标记器之前要采取哪些预处理步骤?
- cucumber - 如何从 TestRunner 获取 TestContext?
- jquery - jquery 在输入更改时扩展 setTimeout 函数
- ms-access - 如何解决类型不匹配运行时“错误代码 13”MS Access
- python-3.x - 使用 Python 展开从 JSON 获得的 dict
- c++ - 如何将此 std::string 转换为 std::basic 字符串?
- javascript - 我不能将两个 var 加在一起,我已经验证这两个是数字 var 而不是字符串(Java Script)
- discord.js - voiceConnection.receiver 和 voiceReciever.createPCMStream 不接收数据
- excel - VBA 公式不匹配
- vhdl - 如何使用 VHDL 中的时钟分频器校正相移?