删除所有重复的单词使用jquery, javascript或PHP


Strikeout all repeated words using jquery, javascript or PHP

是否有一种简单的方法来剔除所有重复的单词(不包括第一个)在使用jquery/javascript或PHP字符串?

示例(使用Javascript):

var text = 'You know that. I know that. They might know';
strikeoutRepeatedFunction(text);

结果:你知道的。我

知道。他们可能知道

谢谢

你可以这样做,

  1. 使用 split(' ') 分割字符串,它将按空格分割。
  2. 现在使用map()遍历它们,并将唯一的单词存储在数组
  3. 如果重复,返回由 del 标签包装的字符串,否则返回字符串本身。
  4. 为避免大小写问题,在比较时将字符串转换为小写,请使用 toLowerCase()
  5. 使用 join(' ')
  6. 组合数组

var text = 'You know that. I know that. They might know';
function strikeoutRepeatedFunction(t) {
  var words = [];
  return t.split(' ').map(function(v) {
    if (words.indexOf(v.toLowerCase()) === -1)
      words.push(v.toLowerCase());
    else
      return '<del>' + v + '</del>';
    return v;
  }).join(' ');
}
document.write(strikeoutRepeatedFunction(text));

有时.在字符串中可能会导致问题,避免使用

var text = 'You know that.  I know that. They might know. that you';
function strikeoutRepeatedFunction(t) {
  var words = [];
  return t.split(' ').map(function(v) {
    if (words.indexOf(v.replace(/^'.+|'.+$/,'').toLowerCase()) === -1)
      words.push(v.replace(/^'.+|'.+$/,'').toLowerCase());
    else
      return '<del>' + v + '</del>';
    return v;
  }).join(' ');
}
document.write(strikeoutRepeatedFunction(text));

不那么优雅的东西:p

var text = 'You know that. I know that. They might know';
var x=text.split(" ");
for(var v=0;v<x.length;v++)
{
    var t=x[v];
    for(var b=v+1;b<x.length;b++)
    {
      if(x[b]==t)
      {
        x[b]="<del>"+x[b]+"</del>";
      }
     }
}
$(".div").html(x.join());

查看此处