如何替换附加到另一个字符串的字符串?

时间:2018-10-22 18:57:58

标签: javascript node.js string

我对来自数据源的详细描述。数据可以加5,000个字符。我们有一小段不需要的简短描述行。当未填写时,我们使用描述中的前128个字符,并在最后三个字符后加上“ ...”。因此说明是125,最后三个是“ ...”。

我们遇到文字转语音的问题,其中附有作品的“ ...”表示错误。例如,通过短语可以看起来像“美丽的家...”。

我想先找到“ ...”,然后再找到“附加”的单词(通过触摸该单词,如无空格),并用“截断”或“查看”两行的文字替换它详细说明”。

我知道replace,但是它只包含一个硬字符串,所以我只是替换“ ...”而不是它所附加的单词。

一些预期结果的例子:

welcome to this beautiful home -> welcome to this beautiful home
welcome to this beautiful h... -> welcome to this beautiful truncated
welcome to this beautiful ... -> welcome to this beautiful truncated

如何在JavaScript中完成此操作?

3 个答案:

答案 0 :(得分:5)

字符串replace确实考虑了正则表达式。因此,您可以执行以下操作:

let strs = [
  'welcome to this beautiful home',
  'welcome to this beautiful h...',
  'welcome to this beautiful ...'
];

strs.forEach(s => console.log(s.replace(/\w*\.{3}/g, 'truncated')));

答案 1 :(得分:2)

您可以使用正则表达式(regex101):

const replaceEllipsis = (str) => str.replace(/\S*\.{3}$/, 'truncated');

console.log(replaceEllipsis('welcome to this beautiful home'));  //-> welcome to this beautiful home
console.log(replaceEllipsis('welcome to this beautiful h...'));  //-> welcome to this beautiful truncated
console.log(replaceEllipsis('welcome to this beautiful ...'));  //->  welcome to this beautiful truncated

答案 2 :(得分:1)

您可以使用这样的正则表达式:

([^\s]*\.\.\.)$

并将其替换为空字符串

这里是一个示例:https://regex101.com/r/QfnfVn/2


此正则表达式选择任何非空格字符,紧随其后的是字符串末尾的三个点和字符串末尾的三个点,而字符串前面没有任何非空格字符。 / p>