2011-03-31 37 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'));