如何删除不包含特定字符串的行

时间:2017-03-09 06:55:31

标签: javascript php jquery

您好我正在尝试删除不包含特定字符串的行 假设我有行

<p>hello are news watch</p>
<p>news watch</p>
<p>news watch hour</p>
<p>hey how</p>
<p>hey news</p>

我的特定字符串是新闻观看

如何删除包含word news watch

的行

预期输出为:

 hello are news watch
 news watch
 news watch hour

3 个答案:

答案 0 :(得分:2)

使用String#split拆分字符串,然后使用Array#filterString#indexOf方法过滤掉包含文本的行,最后使用Array#join方法将其联接回来。

var str = `hello are news watch
news watch
news watch hour
hey how
hey news`;

console.log(
  str.split('\n')
  .filter(function(v) {
    return v.indexOf('news watch') > -1;
  })
  .join('\n')
)

如果它们是p标签并且您想要删除它们,那么请使用jQuery filter()方法。

/*
$('body').html($('body p').filter(function() {
  return $(this).text().indexOf('news watch') > -1;
}))
*/


$('body p').filter(function() {
  return $(this).text().indexOf('news watch') === -1;
}).remove();
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<p>hello are news watch</p>
<p> news watch</p>
<p> news watch hour</p>
<p> hey how</p>
<p> hey news</p>

如果您需要获取这些文本,请使用jQuery map()方法。

console.log(
  $('body p').map(function() {
    return $(this).text().indexOf('news watch') > -1 ? $(this).text() : null;
  }).get().join('\n')
)
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<p>hello are news watch</p>
<p> news watch</p>
<p> news watch hour</p>
<p> hey how</p>
<p> hey news</p>

答案 1 :(得分:0)

你可以使用前面文章中提到的过滤器,或者你可以使用正则表达式。要在php中执行此操作,您可以将其拆分为一个行数组,然后使用preg_grep。大多数高级语言都支持正则表达式。

https://www.tutorialspoint.com/php/php_regular_expression.htm https://www.tutorialspoint.com/php/php_preg_grep.htm

答案 2 :(得分:0)

$("p").each(function(){
 var str=$(this).text();  
 if (str.indexOf("news watch") <= 0)
 {
  $(this).hide(); // or use remove();
 }
});