「truncate words」は一連の単語を取り、最初の、たとえば 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;
}
違いは何ですか?