【问题标题】:How can I make sure that my javascript removes whitespace before adding "..."如何确保我的 javascript 在添加“...”之前删除空格
【发布时间】:2013-07-09 22:59:11
【问题描述】:

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

Å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 ...

如果您看到三个“...”,则表示我不想拥有一个空格。

我希望它是:

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));
          });

如何确保空间被删除?

感谢任何形式的帮助。

【问题讨论】:

  • 你知道吗,如果这是为了显示,你可以用 CSS 获得同样的效果?
  • 我试过了,但效果不一样:/

标签: javascript jquery


【解决方案1】:

只需更改此行:

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

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

【讨论】:

  • @Rohander 没问题,很乐意提供帮助。
  • 请注意(尽管不太可能)如果text 中没有空格,那么这将输出"..."。 (就像 OP 的代码一样。)
【解决方案2】:

我会这样做:

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

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

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

【讨论】:

  • /\s*$/ 是您需要的正则表达式。
猜你喜欢
  • 2013-12-01
  • 1970-01-01
  • 1970-01-01
  • 2020-01-05
  • 1970-01-01
  • 2018-02-07
  • 2015-08-13
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多