[英]remove strong tag and its content from string
I'm having below string with this html, i'm wondering how can i remove/filter all strong tags and its text from the string? 我在此html的字符串下面,我想知道如何从字符串中删除/过滤所有强标签及其文本?
html html
<p>
<br>
2-3 spsk græsk yoghurt, gerne 10 %
<strong>Dressing: </strong>
<br>
1 lille spsk god mayonnaise
<br>
1-2 tsk æbleeddike
<br>
1-2 tsk honning
<br>
himalayasalt og friskkværnet hvid peber
<br>
</p>
so far i have this, but only seem to remove strong tag if it is at the top 到目前为止,我有这个,但是似乎只有在顶部才删除强标签
var ingredientsArray = ingredients.split('<br>').map(it => it.trim()).filter(it => !!it && !it.startsWith('<strong>'));
You can use the DOM API for this: 您可以为此使用DOM API:
function stripStrong(html) { var span = document.createElement('span'); span.innerHTML = html; [...span.getElementsByTagName('strong')].reverse().forEach( strong => strong.parentNode.removeChild(strong) ); return span.innerHTML; } var html = `<p> <br> 2-3 spsk græsk yoghurt, gerne 10 % <strong>Dressing: </strong> <br> 1 lille spsk god mayonnaise <br> 1-2 tsk æbleeddike <br> 1-2 tsk honning <br> himalayasalt og friskkværnet hvid peber <br> </p>`; console.log(stripStrong(html));
Note that this also works if the strong
tag has attributes, styles, is nested with other strong
tags, etc... something that regular expressions can have trouble with. 请注意,如果
strong
标签具有属性,样式,与其他strong
标签嵌套等,这也适用。正则表达式可能会遇到麻烦。
Parsing the string as HTML would most likely be the way to go, depending on what the goal is ? 根据目标是什么,最有可能将字符串解析为HTML。
var ingredients = '<p><br>2-3 spsk græsk yoghurt, gerne 10 % <strong>Dressing: </strong><br>1 lille spsk god mayonnaise<br>1-2 tsk æbleeddike <br>1-2 tsk honning <br>himalayasalt og friskkværnet hvid peber<br></p>'; var doc = new DOMParser().parseFromString(ingredients, 'text/html'); [].forEach.call(doc.querySelectorAll('strong'), function (item) { item.parentNode.removeChild(item); }); document.body.innerText = '<pre>' + doc.body.innerHTML + '</pre>';
与其尝试操纵字符串,不如将CSS规则应用于将其放入DOM的任何位置:
strong { display: none; }
You can use regex for this: 您可以为此使用正则表达式:
var ingredientsArray = ingredients.replace(/<strong>[\s\S]*?<\/strong>/g, '')
.split('<br>').map(it => it.trim()).filter(Boolean);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.