'Усеченные слова' будут принимать строку слов и возвращать только первые, скажем, 10 слов.
В dojo (библиотека javascript) у них есть такая функция, код которой такой:
truncatewords: function(value, arg){
// summary: Truncates a string after a certain number of words
// arg: Integer
// Number of words to truncate after
arg = parseInt(arg);
if(!arg){
return value;
}
for(var i = 0, j = value.length, count = 0, current, last; i < value.length; i++){
current = value.charAt(i);
if(dojox.dtl.filter.strings._truncatewords.test(last)){
if(!dojox.dtl.filter.strings._truncatewords.test(current)){
++count;
if(count == arg){
return value.substring(0, j + 1);
}
}
}else if(!dojox.dtl.filter.strings._truncatewords.test(current)){
j = i;
}
last = current;
}
return value;
}
, где dojox.dtl.filter.strings._truncatewords.
равно /(&.*?;|<.*?>|(\w[\w-]*))/g
Почему это не написано так:
function truncate(value,arg) {
var value_arr = value.split(' ');
if(arg < value_arr.length) {
value = value_arr.slice(0,arg).join(' '); }
return value;
}
а в чем различия?