【发布时间】:2009-06-09 19:47:21
【问题描述】:
“截断单词”将获取一串单词并仅返回第一个单词,比如说 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;
}
又有什么区别?
【问题讨论】:
标签: javascript string truncate