是否有一种简单的方法来剔除所有重复的单词(不包括第一个)在使用jquery/javascript或PHP字符串?
示例(使用Javascript):
var text = 'You know that. I know that. They might know';
strikeoutRepeatedFunction(text);
结果:你知道的。我
谢谢
你可以这样做,
- 使用
split(' ')
分割字符串,它将按空格分割。 - 现在使用
map()
遍历它们,并将唯一的单词存储在数组 中 - 如果重复,返回由
del
标签包装的字符串,否则返回字符串本身。 - 为避免大小写问题,在比较时将字符串转换为小写,请使用
toLowerCase()
。 - 使用
join(' ')
组合数组
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());
查看此处