【问题标题】:Selected duplicate words removing in a sentence through javascript通过javascript删除句子中的选定重复词
【发布时间】:2019-07-30 14:01:26
【问题描述】:

我想删除句子中一些以@开头的单词,这些单词在javascript中重复,我该如何实现它。
例如:

"This is @banker does banking in a @bank, this @banker is good."  

在这句话中,我想从中删除多余的单词“@banker”。

  1. 如何在 javascript 中实现?
  2. 考虑到每个应该删除的单词都以“@”开头

【问题讨论】:

  • 首先你尝试一下。如果您有问题,我们会提供帮助。
  • 我尝试拆分并能够删除重复项,但所有重复项都被删除。那就是问题所在。我想删除仅以@开头的重复项。
  • 那会改变句子的意思。 ", this is good" = 银行在银行里很好(这 = 银行),而 ", this banker is good" = 银行家自己擅长他们所做的事情(这 = 银行家)。
  • 这里的句子只是一个例子。

标签: javascript jquery duplicates


【解决方案1】:

这是一个可能的解决方案:

const text = 'This is @banker does banking in a @bank, this @banker is good.';
const splittedWords = text.split(' ');

let newSentence = [];

splittedWords.forEach(word => {
    if (word.startsWith('@')) {
        if (newSentence.indexOf(word) === -1) {
            newSentence.push(word);
        }
    } else {
        newSentence.push(word);
    }
});

console.log(newSentence.join(' '));

更新

const text = 'This is @2, this is @3, this is @2';
const splittedWords = text.split(' ');

let newSentence = [];

splittedWords.forEach(word => {
    if (word.startsWith('@')) {
        cleanedSentence = newSentence.map(word => word.replace(/,/g, ''));
        cleanedWord = word.replace(/,/g, '');
        if (cleanedSentence.indexOf(cleanedWord) === -1) {
            newSentence.push(word);
        }
    } else {
        newSentence.push(word);
    }
});

console.log(newSentence.join(' '));

【讨论】:

  • 这很好,它适用于字母但不适用于数字,就像“这是@2,这是@3,这是@2”它没有删除完整的重复(@2)它只是从重复的返回(2)中删除@。上一句的示例:“这是@2,这是@3,这是2”
  • @RohitGowda 这不是type 的问题。问题是它们是不同的字符串(因为逗号)@2,@2。我正在更新答案。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-06-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-10-03
  • 1970-01-01
相关资源
最近更新 更多