缩短包含标签的html字符串中的字符串

时间:2015-07-12 07:47:11

标签: javascript

这是我的问题 - 给定一个HTML字符串(我从元素的innerHTML中获取)包含标签和字符的混合,例如:

var s='first<font size="6">second</font>third';

我想将字符串缩短为n个字符,忽略标记,以便

shorten(13) -> 'first<font size="6">second</font>th'
shorten(7)  -> 'first<font size="6">se'
shorten(2)  -> 'fi'

有人可以推荐一种实现这一目标的好方法吗?谢谢! (至少一个假设没有嵌套标签的解决方案,但是更好)

2 个答案:

答案 0 :(得分:1)

我快速解决了你的问题,它只是你的字符串的线性遍历,避免计算标签内的那些(这个函数不检查Passerby评论的无效/不匹配的标签)。

你可以使用它来实现更多功能/更精细的方式

function shorten(str, top){
    var tag = false;
    var count = 0;
    var r = "";

    for(var i=0; i<str.length; i++){
        if(count == top) break;

        if(str[i] == '<') tag = true;

        if(str[i] == '>') {
            tag = false;
            r += str[i];
            continue;
        }   

        r += str[i];

        if(!tag) count++;
    }
    return r;
}

干杯:)

编辑:将变量'str'的小错误更改为's'

答案 1 :(得分:1)

我做了类似的事情:

indexPath.section

运行此jsFiddle作为示例 https://jsfiddle.net/k59yam29/

可能不是MetalRider的解决方案,但有效...你需要一个特殊的隐藏div用于这个解决方案,不是很好。