我对来自数据源的详细描述。数据可以加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中完成此操作?
答案 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>