1

我有一个字符串,我想检查它是否包含大于或等于 15 个字符的单词。如果是这样,用空格将该单词拆分为 5 个字符,然后返回带有拆分单词的相同字符串。

我的代码有效,但问题是我的字符串也可能包含 HTML 标签,我不想碰它们。

function space_that(_e){

    var w = [];
    var t = $(_e).text();

    w = t.split(" ");

    for(var s in w)
        if(w[s].length >= 15)
            w[s] = w[s].substr(0,10) + " ";

    $(_e).text(w.join(" "));

    return true;

}
4

1 回答 1

1

只需检查该部分是否以 < 开头,那么它就是一个 HTML 标记。

function space_that(_e){

    var w = [];
    var t = $(_e).text();

    w = t.split(" ");

    for(var s in w) {
        if(w[s].length >= 15 
           && w[s].substring(0, 1) != "<" 
           && w[s].substring(w[s].length-1, 1) != ">")
            w[s] = w[s].substr(0,10) + " ";
    }

    $(_e).text(w.join(" "));

    return true;

}

编辑:更正了错误(旧答案仅影响 html 标签)并添加了对开始和结束标签的检查。

以下版本应该适用于内部有空格的标签。

function space_that(_e){

    var w = [];
    var t = $(_e).text();

    w = t.split(" ");
    var inTag = false;

    for(var s in w) {
        if(w[s].substring(0, 1) == "<") inTag = true;
        if(w[s].substring(w[s].length-1, 1) == ">") inTag = false;
        if(inTag) continue;
        if(w[s].length >= 15 
           && w[s].substring(w[s].length-1, 1) != ">")
            w[s] = w[s].substr(0,10) + " ";
    }

    $(_e).text(w.join(" "));

    return true;

}
于 2013-02-01T14:15:13.450 回答