4

次のような文字列変数があります。

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

私のJavaScriptが実行されると、文字列が次のようになります。

Storsjöcupen の Årets upplaga av Storsjöcupen、en fotbollsturnering i Östersund for ungdomar、fick en trist avrundning när anhängare to ett norskt pojklag ...

3 つの「...」が表示されている場合は、入れたくないスペースがあります。

私はそれが欲しい:

ポイクラ...

私の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;

あなたのコードは最後のスペースを見つけて、それ以降のすべてを削除しています。渡される長さをsubstring1 文字短くするだけで、最後のスペースも削除されます。

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

これは、他のコメントで言及されているすべてのケースを処理する必要があります。これには、スペースが含まれていない文字列や、複数の連続したスペースが含まれる文字列が含まれています。

また、提案として、コンストラクタではないため、関数名を からTrimLengthに自由に変更しました。trimLength慣用的な JavaScript では、コンストラクター名は大文字で始まり、その他の関数と変数は小文字で始まります。

于 2013-07-09T23:29:42.407 に答える