带有 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);
