网站搜索

带有 HTML 标签的 Javascript 子字符串


我在同一主题上搜索了太多,但没有一个完全符合我所寻找的。

我有一个像这样的字符串:

var string ='<strong><span>Hii </span> <p>this is just a demo <span>string<span></p></strong>'

现在我想使用 JavaScript 的 substring 函数对它进行限制截取,但不希望标签被截断,比如说

<strong><span>Hii </span> <p

它应该像

<strong><span>Hii </span> <p>

我正在使用

string.substr(0,200)

字符串是带有 HTML 标签的动态变量

答案#1

我的解决方案:

function smart_substr(str, len) {
    var temp = str.substr(0, len);
    if(temp.lastIndexOf('<') > temp.lastIndexOf('>')) {
        temp = str.substr(0, 1 + str.indexOf('>', temp.lastIndexOf('<')));
    }
    return temp;
}

http://jsfiddle.net/8t6fs67n/

答案#2

它不优雅,但可行,会增加字符以包括下一个关闭标签 https://jsfiddle.net/q680vors/

只需将长度更改为所需的字符数。

var string ='<strong><span>Hii </span> <p>this is just a demo <span>string<span></p></strong>';

var length = 2;
var openTag = 0, closeTag = 0,i=0;
for(i; i<length; i++)
{
    if(string[i] == "<")
        openTag++;
    if(string[i] == ">")
        closeTag++;
}
if(openTag > closeTag)
{
    while(string[i] != ">")
        i++;
}

var newString = string.substring(0,(i+1));

alert(newString);