如何从字符串中拆分HTML代码

时间:2014-12-23 14:54:01

标签: javascript jquery angularjs

我有html代码的字符串值。喜欢以下

 var stringData =  "My name is khan  <ul><li>welo</li><li>sdlld</li><li>ssal</li><li>asalas</li>      <li>aslaS</li></ul> to <ul><li>welo</li><li>sdlld</li><li>ssal</li><li>asalas</li><li>aslaS</li></ul><ol><li>HI BOY&nbsp;</li><li>WWF</li></ol>."

我想从字符串中单独使用HTML代码。

var htmlCode = <ul><li>welo</li><li>sdlld</li><li>ssal</li><li>asalas</li><li>aslaS</li></ul> to <ul><li>welo</li><li>sdlld</li><li>ssal</li><li>asalas</li><li>aslaS</li></ul><ol><li>HI BOY&nbsp;</li><li>WWF</li></ol>.

注意:在字符串中,我的名字是khan是动态内容所以我们也会有其他文字而不是&#34;我的名字是汗&#34;

Ex: " Hi how are <ul><li>welo</li><li>sdlld</li><li>ssal</li><li>asalas</li><li>aslaS</li></ul> to <ul><li>welo</li><li>sdlld</li><li>ssal</li><li>asalas</li><li>aslaS</li></ul><ol><li>HI BOY&nbsp;</li><li>WWF</li></ol>."

所以我们不应该使用khan或space分割(split(&#39;&#39;))。请给出上述问题的解决方案

7 个答案:

答案 0 :(得分:1)

你可以从“&lt;”的第一个索引子串像这样:

var htmlCode = stringData.slice(stringData.indexOf("<"), stringData.length);

或只是

var htmlCode = stringData.substring(stringData.indexOf("<"));

答案 1 :(得分:0)

var stringData = "var stringData =  "My name is khan  <ul><li>welo</li><li>sdlld</li><li>ssal</li>....";
var n = stringData.indexOf("<ul>");

if (n !== -1) {
   var htmlString = stringData.substring(n, stringData.length)
}

答案 2 :(得分:0)

从第一个&#39;&lt;&#39;开始获取子字符串怎么样?并以最后的&#39;&gt;&#39;

结尾

答案 3 :(得分:0)

如果您确定您的标记是开放式且有效并且在一行中,则可以使用

stringData.match(/(<.*>).$/)[1]

答案 4 :(得分:0)

您可以使用jQuery的.children方法,这将省去任何文本节点:

var stringData =  "My name is khan  <ul><li>welo</li><li>sdlld</li><li>ssal</li><li>asalas</li>      <li>aslaS</li></ul> to <ul><li>welo</li><li>sdlld</li><li>ssal</li><li>asalas</li><li>aslaS</li></ul><ol><li>HI BOY&nbsp;</li><li>WWF</li></ol>.";
var htmlOnly = $('<div/>').html( $('<div/>').html( stringData ).children() ).html();


//DEMO ONLY
$('.before').text( stringData );
$('.after').text( htmlOnly );
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>

BEFORE:<br><div class="before"></div>

AFTER:<br><div class="after"></div>

答案 5 :(得分:0)

使用包HTMLAgilityPack

用于基于标签的提取值

答案 6 :(得分:0)

尝试

var htmlCode = $.grep($.parseHTML(stringData), function(html) {
  return html.nodeType !== 3
});

var stringData =  "My name is khan  <ul><li>welo</li><li>sdlld</li><li>ssal</li><li>asalas</li>      <li>aslaS</li></ul> to <ul><li>welo</li><li>sdlld</li><li>ssal</li><li>asalas</li><li>aslaS</li></ul><ol><li>HI BOY&nbsp;</li><li>WWF</li></ol>.";
    var htmlCode = $.grep($.parseHTML(stringData), function(html) {
      return html.nodeType !== 3
    });
$("body").append(htmlCode)
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>