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);
回答
w_4_wid
似乎將文本塊截斷爲最大數量的字符,而不分割單詞,並且如果文本被截斷以在句子末尾添加'...'elipses。
w_3_wid
似乎做了類似的事情,強加每個單詞的最大字符數。
w_6_wid
在鏈中調用上述兩個函數,對輸入文本施加兩個約束。
看起來代碼試圖接受一個句子,然後首先截斷給定閾值的長單詞,然後截斷整個句子(給定另一個閾值),以「...」結束句子。
w_4_wid
看起來像它試圖截斷句子到第二個參數(60)的最大寬度。
它dosen't,它會回退幹線版本,如果它的長... – scheffield 2011-03-31 20:38:18
謝謝scheffield - 沒有發現這一點。修改我的回答以避免進一步混淆。 – 2011-03-31 20:41:03
不用擔心......:D – scheffield 2011-03-31 20:44:24
第一:您的程序員應該閱讀「清潔代碼」一書。
功能w_3_wid
的想法是 - 對什麼都原因 - trunkate的話,其長度超過15個字符,包含HTML實體(如
)
第二個函數(w_4_wid
)截取字符串的字邊界。
最後一個(w_6_wid
)結合了這兩個功能。
要測試這些代碼,您可以添加這樣的事情:
alert(w_6_wid('Lorem ipsum abcdefghijklmnopqu abcdefghijklm&bnsp;nopqu'));
- 1. 這段代碼做了什麼?
- 2. 這段代碼做了什麼? (awk)
- 3. 這段代碼做了什麼?
- 4. C++這段代碼做了什麼?
- 5. 這段代碼做了什麼?
- 6. 這段代碼做了什麼?
- 7. 這段代碼做了什麼?
- 8. 這段代碼究竟做了什麼?
- 9. 這段代碼做了什麼蛇?
- 10. 這段代碼做了什麼?
- 11. Normalized cut:這段代碼做了什麼?
- 12. 這段代碼做了什麼?
- 13. 這段代碼做了什麼?
- 14. 這段代碼究竟做了什麼?
- 15. 這段代碼做了什麼?
- 16. jQuery:這段代碼做了什麼?
- 17. 這段代碼做了什麼?
- 18. 這段代碼做了什麼? 「data.target == this」
- 19. 這個C++代碼段做了什麼?
- 20. 這段代碼做了什麼(C)
- 21. 這段JavaScript代碼做了什麼?
- 22. 這段代碼片斷做了什麼?
- 23. 這段代碼做了什麼?
- 24. 這段代碼做了什麼?
- 25. 這段代碼做什麼錯了
- 26. 這段代碼做了什麼?
- 27. 這段代碼做了什麼?
- 28. 這段代碼做了什麼?
- 29. 這行代碼在這段代碼中做了什麼?
- 30. 這段代碼在這裏做什麼?
我不知道它做什麼..但我會強烈建議聘請一個新的程序員...... – 2011-03-31 20:26:05
提供工作保障:) – 2011-03-31 20:26:17
爲什麼你想知道嗎?你的程序員爲什麼給了你這個? – 2011-03-31 20:27:29