2011-03-31 35 views
0
function w_3_wid(str, wid03) { 
    var word = new Array(); 
    var i; 
    var ret = ''; 
    word = str.split(" "); 
    for (i = 0; i < word.length; i ++) { 
     if (word[i].length > wid03 && word[i].search(/&\w+;/) < 0) ret += word[i].substr(0, wid03) + ' ' + word[i].substr(wid03) + ' '; 
     else ret += word[i] + ' '; 
    } 
    return ret; 
} 
function w_4_wid(str, wid03) { 
    if (str.length <= wid03) return str; 
    var word = new Array(); 
    word = str.split(" "); 
    var ret = word[0] + ' '; 
    var test; 
    for (i = 1; i < word.length; i ++) { 
     test = ret + word[i]; 
     if (test.length > wid03) return ret + '...'; 
     else ret += word[i] + ' '; 
    } 
    return str; 
} 


function w_6_wid(title) { 
    title = w_3_wid(title, 15); 
    title = w_4_wid(title, 60); 
    return title; 
} 

w_6_wid(str); 
+12

我不知道它做什麼..但我會強烈建議聘請一個新的程序員...... – 2011-03-31 20:26:05

+0

提供工作保障:) – 2011-03-31 20:26:17

+0

爲什麼你想知道嗎?你的程序員爲什麼給了你這個? – 2011-03-31 20:27:29

回答

2

w_4_wid似乎將文本塊截斷爲最大數量的字符,而不分割單詞,並且如果文本被截斷以在句子末尾添加'...'elipses。

w_3_wid似乎做了類似的事情,強加每個單詞的最大字符數。

w_6_wid在鏈中調用上述兩個函數,對輸入文本施加兩個約束。

1

看起來代碼試圖接受一個句子,然後首先截斷給定閾值的長單詞,然後截斷整個句子(給定另一個閾值),以「...」結束句子。

0

w_4_wid看起來像它試圖截斷句子到第二個參數(60)的最大寬度。

+0

它dosen't,它會回退幹線版本,如果它的長... – scheffield 2011-03-31 20:38:18

+1

謝謝scheffield - 沒有發現這一點。修改我的回答以避免進一步混淆。 – 2011-03-31 20:41:03

+0

不用擔心......:D – scheffield 2011-03-31 20:44:24

1

第一:您的程序員應該閱讀「清潔代碼」一書。

功能w_3_wid的想法是 - 對什麼都原因 - trunkate的話,其長度超過15個字符,包含HTML實體(如&nbsp;

第二個函數(w_4_wid)截取字符串的字邊界。

最後一個(w_6_wid)結合了這兩個功能。

要測試這些代碼,您可以添加這樣的事情:

alert(w_6_wid('Lorem ipsum abcdefghijklmnopqu abcdefghijklm&bnsp;nopqu'));