如何截断js中的html字符串

时间:2015-11-07 01:37:43

标签: javascript

我有一个页面将html实体中的文本显示在div节点中,如下所示:

<p>isdjf</p>osdf&kdjf;'ldsf."jdof&ids 想在js中将其截断为10个字母长度,但是想避免破坏html实体,如何正确实现? substr

html实体中断如下:

var str = '0123456>abc';
console.log( str.substr(0,10) );  // -> "0123456&#x"

你看到了问题吗?

1 个答案:

答案 0 :(得分:2)

function truncate(enitityEncodedString){

    var string, count, pos;

    string = '';

    count = 0;

    while(count <= 10){

        if(enitityEncodedString.search(/&#.{2,3};/) === 0){

            pos = enitityEncodedString.indexOf(';') + 1;

            string += enitityEncodedString.substr(0, pos);

            enitityEncodedString = enitityEncodedString.substr(pos);

        }else{

            string += enitityEncodedString[0];

            enitityEncodedString = enitityEncodedString.substr(1);

        }

        count++;

    }

    return string;


}

检查编码字符串开头的html实体。如果是这样,将html实体连接到返回字符串(我使用.indexOf()来获取html实体的长度,假设第一个分号表示同一个html实体的结尾)。否则,只需将第一个字符添加到返回字符串即可。重复,直到你有10个字符。

也许不是最漂亮的方式,但它有效。