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