2013-02-01 40 views
1

我有一個字符串,我想檢查它是否包含長於或等於15個字符的單詞。如果是這樣,將這個單詞分成5個字符空格,然後用分割的單詞返回相同的字符串。添加空格留下HTML標記

我的代碼有效,但問題是我的字符串也可能包含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; 

} 

回答

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; 

} 
+0

這是非常好的,我想更好地檢查,如果它開始,它與標籤打開和關閉標籤的結束,但無論如何,這解決了99%,因此,如果沒有更好的,你可以做我會接受你的答案 – sbaaaang

+0

它現在也檢查關閉「>」了。 – th3falc0n