在添加“...”之前,如何确保我的javascript删除空格

时间:2013-07-09 22:59:12

标签: javascript jquery

我有一个字符串变量,看起来像这样:

  

ÅretsupplagaavStorsjöcupen,en fotbollsturneringiÖstersundför   ungdomar,fick en tristavrundningnäruhängare能到ett norskt   pojklaganklagadesförtieha farit ut i rasistiska och   könsordskryddadetillmälenpotspelareimotståndarlag。

当我的javascript被执行时,它将字符串转换为:

  

ÅretsupplagaavStorsjöcupen,en fotbollsturneringiÖstersundför   ungdomar,fick en tristavrundningnäruhängare能到ett norskt   pojklag ......

如果你看到三个“......”,我就不想拥有一个空间。

我希望它是:

  

... pojklag

我的javascript看起来像这样:

  function TrimLength(text, maxLength) {
          text = $.trim(text);

          if (text.length > maxLength) {
              text = text.substring(0, maxLength - ellipsis.length)
              return text.substring(0, text.lastIndexOf(" ")) + ellipsis;
          }
          else
              return text;
      }

$(document).ready(function () {
          $(".text").each(function () {
              var text = $(this).text();
              $(this).text(TrimLength(text, 150));
          });

如何确保删除空间?

感谢任何形式的帮助。

2 个答案:

答案 0 :(得分:5)

只需更改此行:

return text.substring(0, text.lastIndexOf(" ") - 1) + ellipsis;

您的代码正在查找最后一个空格并删除其后的所有内容。只需将传递给substring的长度减去一个字符,您也将删除最后一个空格。

答案 1 :(得分:1)

我会这样做:

function trimLength( text, maxLength ) {
    text = $.trim( text );
    if( text.length <= maxLength )
        return text;
    return text
        .slice( 0, maxLength - ellipsis.length )
        .replace( /\s+\S*$/, '' )
        + ellipsis;
}

这应该处理其他注释中提到的所有情况,包括一个没有空格的字符串,以及一个连续多个空格的字符串。

另外,作为一个建议,我冒昧地将函数名称从TrimLength更改为trimLength,因为它不是构造函数。惯用JavaScript以大写字母和其他函数以及带小写字母的变量开始构造函数名称。