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 に答える