我刚刚编写了一个 limitChars()
函数。
var limitChars = function(str, limit, endChar, preserveWord) {
str = $.trim(str);
var strLength = str.length;
if (strLength <= limit) {
return str;
}
if (limit == 0) {
return '';
}
endChar = endChar || '…';
if (preserveWord && ! str.substr(limit, 1).match(/\s/)) {
while ( limit < strLength && ! str.substr(limit, 1).match(/\s/)) {
limit++;
}
}
return $.trim(str.substr(0, limit)) + endChar;
}
出于学习目的,我喜欢post my solution在这里看看是否有人可以改进它(我经常发现我忽略了一些东西,我们都学习了 :) )
所以,请告诉我哪里可以改进这段代码:)
(哦,我使用 jQuery 的 $.trim()
,但如果您想使用更多 jQuery 特定函数,请随意使用)。
最佳答案
自 indexOf
接受一个可选的第二个参数 fromIndex
,我们可以这样实现函数:
function limitChars(str, limit, endChar, preserveWord) {
str = $.trim(str);
return (str.length > limit) ? str.substring(0, (preserveWord ? str.indexOf(' ', limit) : limit)) + (endChar || '…') : str;
}
可读性差很多,但我想你明白了。 :)
编辑: 我刚刚意识到我错过了原始脚本的一部分,只有当字符串的长度长于 时才会附加
。是时候使用另一个三元运算符了!endChar
限制
关于javascript - 这个 limitChars 功能可以改进吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4021362/