4

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

Årets upplaga av Storsjöcupen, en fotbollsturnering i Östersund för ungdomar, fick en trist avrundning när anhängare till ett norskt pojklag anklagades för att ha farit ut i rasistiska och könsordskryddade tillmälen mot spelare i motståndarlag。

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

Årets upplaga av Storsjöcupen, en fotbollsturnering i Östersund för ungdomar, fick en trist avrundning när anhängare till ett norskt 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));
          });

我怎样才能确保空间被删除?

任何形式的帮助表示赞赏。

4

2 回答 2

5

只需更改此行:

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

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

于 2013-07-09T23:00:26.260 回答
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;
}

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

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

于 2013-07-09T23:29:42.407 回答