Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/78.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ssh/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 这个limitChars功能可以改进吗?_Javascript_Jquery - Fatal编程技术网

Javascript 这个limitChars功能可以改进吗?

Javascript 这个limitChars功能可以改进吗?,javascript,jquery,Javascript,Jquery,我刚刚编写了一个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 |

我刚刚编写了一个
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;     
}
var limitChars=函数(str、limit、endChar、preserveWord){
str=$.trim(str);
var strLength=str.length;

如果(strLength,我们可以简单地执行下面的操作

 function ShortentText(text, limit) {

var temp;
if (text.length - 1 > limit) {
    temp = text.substring(0, limit-3) + '...';
}
else {
    temp = text;
}
return temp;

}

我不知道这是否是一个更好的解决方案,但这也可以:

var limitChars = function(str, limit, endChar, preserveWord) {
  if($.trim(str).length<limit)
 return $.trim(str);
  else if(!preserveWord)
 return $.trim(str).substr(0,limit).concat(endChar||'…');
  else {
    var strArr = $.trim(str).split(" ");
    var i=-1;
    var retStr = "";
    while(i+1<strArr.length &&  retStr.concat(" ", strArr[i+1]).length < limit)
  retStr = retStr.concat(" ", strArr[++i]);
    return retStr.concat(endChar|| '…');
  }
}
var limitChars=函数(str、limit、endChar、preserveWord){
如果($.trim(str).lengthSince)从index
中获取可选的第二个参数
,则可以实现如下函数:

function limitChars(str, limit, endChar, preserveWord) {
    str = $.trim(str);
    return (str.length > limit) ? str.substring(0, (preserveWord ? str.indexOf(' ', limit) : limit)) + (endChar || '…') : str;
}
可读性差很多,但我想你明白了。:)


<> > >编辑:我意识到,只有当字符串的长度比Lime时,我已经错过了原始代码的一部分,它将追加<代码> Entchar < /C> >。另一个三元运算符的时间!

为什么要使用jQuery为简单的限制字符函数。实际上,你应该考虑一下香草JavaScript:@Sarraz我需要一个
trim()的实现
。最好使用jQuery,因为它已经在我的环境中。很抱歉,我的功能只是将…放在我们指定的长度之后,您就可以使用它。@Anurag如果您给它一个很长的文本,它会以友好的方式缩短它。我的意思是说,不删掉我的任何功能:)我还假设结尾字符是ad在切断后附加。同样,也可以使用Unicode省略号。谢谢你的回答。但是JavaScript默认参数是这样的。我确实提供了默认参数-
endChar
的省略号和错误值(
undefined
)对于
preserveWord
,我还试图避免每次迭代都重新计算
长度。