Javascript-获取字符串中的字符串 var-str=' ... 文本 ... ';
我在var str中存储了一个长字符串,我需要提取div part=“1”中的字符串。你能帮我吗 您可以创建一个DOM元素,并将其innerHTML设置为字符串。 然后可以遍历子节点并读取所需的属性;) 范例Javascript-获取字符串中的字符串 var-str=' ... 文本 ... ';,javascript,regex,Javascript,Regex,我在var str中存储了一个长字符串,我需要提取div part=“1”中的字符串。你能帮我吗 您可以创建一个DOM元素,并将其innerHTML设置为字符串。 然后可以遍历子节点并读取所需的属性;) 范例 var str = '<div part="1"> <div> ... <p class="so">text</p> ... </div> </
var str = '<div part="1">
<div>
...
<p class="so">text</p>
...
</div>
</div><span></span>';
var-str=”“;
var节点=document.createElement(“div”);
node.innerHTML=str;
对于(var i=0;i
您可以创建一个DOM元素,并将其innerHTML设置为字符串。
然后可以遍历子节点并读取所需的属性;)
范例
var str = '<div part="1">
<div>
...
<p class="so">text</p>
...
</div>
</div><span></span>';
var-str=”“;
var节点=document.createElement(“div”);
node.innerHTML=str;
对于(var i=0;i
如果您使用的是JQuery这样的库,这非常简单,而不必经历使用正则表达式解析HTML的可怕过程
只需将字符串加载到JQuery对象中;然后您可以使用选择器查询它。就这么简单:
var str = "<your><html>";
var node = document.createElement("div");
node.innerHTML = str;
for(var i = 0; i < node.childNodes.length; i++){
console.log(node.childNodes[i].getAttribute("part"));
}
获取class='so'
元素
如果要获取part='1'
中的所有文本,则如下所示:
var so = $(str).find('.so');
使用原型库或其他工具也可以获得类似的结果。在没有任何库的情况下,您仍然可以使用DOM做同样的事情,但这将是非常困难的工作
为了澄清为什么在正则表达式中执行此类操作是个坏主意:
是的,可以做到。可以使用正则表达式扫描HTML代码块并在字符串中查找内容
然而,问题是HTML太多变了——它被定义为一种非常规语言(请记住,'regex'中的'reg'代表'regular')
如果你知道你的HTML结构看起来总是一样的,那就相对容易了。然而,如果传入的HTML可能包含与您期望的完全不同的元素或属性,那么编写正则表达式突然变得极其困难,因为正则表达式是为在可预测的字符串中搜索而设计的。当您考虑到被给予无效HTML代码进行解析的可能性时,难度因素会增加得更多
通过大量的努力和对regex更为深奥的部分的理解,它可以以合理的可靠性完成。但它永远都不会完美——如果你的正则表达式中有它不期望的东西,那么它总是有可能不起作用
相比之下,使用DOM解析它要简单得多——正如所演示的,使用正确的库,它可以是一行代码(并且非常容易阅读,不像您需要编写的可怕的正则表达式)。它的运行效率也会更高,并使您能够在同一块HTML上执行其他搜索操作,而无需再次对其进行重新解析。如果您使用的是JQuery之类的库,则无需经历使用正则表达式解析HTML的可怕过程,这一过程就非常简单 只需将字符串加载到JQuery对象中;然后您可以使用选择器查询它。就这么简单:
var str = "<your><html>";
var node = document.createElement("div");
node.innerHTML = str;
for(var i = 0; i < node.childNodes.length; i++){
console.log(node.childNodes[i].getAttribute("part"));
}
获取class='so'
元素
如果要获取part='1'
中的所有文本,则如下所示:
var so = $(str).find('.so');
使用原型库或其他工具也可以获得类似的结果。在没有任何库的情况下,您仍然可以使用DOM做同样的事情,但这将是非常困难的工作
为了澄清为什么在正则表达式中执行此类操作是个坏主意:
是的,可以做到。可以使用正则表达式扫描HTML代码块并在字符串中查找内容
然而,问题是HTML太多变了——它被定义为一种非常规语言(请记住,'regex'中的'reg'代表'regular')
如果你知道你的HTML结构看起来总是一样的,那就相对容易了。然而,如果传入的HTML可能包含与您期望的完全不同的元素或属性,那么编写正则表达式突然变得极其困难,因为正则表达式是为在可预测的字符串中搜索而设计的。当您考虑到被给予无效HTML代码进行解析的可能性时,难度因素会增加得更多
通过大量的努力和对regex更为深奥的部分的理解,它可以以合理的可靠性完成。但它永远都不会完美——如果你的正则表达式中有它不期望的东西,那么它总是有可能不起作用
相比之下,使用DOM解析它要简单得多——正如所演示的,使用正确的库,它可以是一行代码(并且非常容易阅读,不像您需要编写的可怕的正则表达式)。它的运行效率也会更高,并使您能够在同一块HTML上执行其他搜索操作,而无需重新解析所有内容。不要使用正则表达式解析HTML。请看一看不要使用正则表达式解析HTML。另外,请看一看,因为他需要整个文本,他可以使用
var text=node.textContent | | node.innerText代码>。此外,由于他需要整个文本,他可以使用var text=node.textContent | | node.innerText基于我给出的字符串,var part1=$(str).find('[part=1]').text();这是行不通的。只有当div[part=“1”]有父元素时,它才会起作用。@run:fair-ough。不过,希望我已经给了你足够的时间去做基于我给出的字符串,var part1=$(str).find('[part=1]').text();这是行不通的。只有当div[part=“1”]有父元素时,它才会起作用。@run:fair-ough。不过,希望我已经给了你足够的时间去做