2

生成されるタイトル テキストがたくさんありますが、それらはすべて .Length が異なりますが、文字列の特定の startindex で、最も近いスペースを見つけて、その後のテキストとスペースを削除し、「... "。

最も重要な部分は、49 の長さを延長しないことです。

例:

"What can UK learn from Spanish high speed rail when its crap"

私はそれが次のようになることを確認したい:

"What can UK learn from Spanish high speed rail..."

Jqueryでこれを行うにはどうすればよいですか?

これを達成するC#コードがあります:

public static string TrimLength(string text, int maxLength)
{
    if (text.Length > maxLength)
    {
        maxLength -= "...".Length;
        maxLength = text.Length < maxLength ? text.Length : maxLength;
        bool isLastSpace = text[maxLength] == ' ';
        string part = text.Substring(0, maxLength);
        if (isLastSpace)
            return part + "...";
        int lastSpaceIndexBeforeMax = part.LastIndexOf(' ');
        if (lastSpaceIndexBeforeMax == -1)
            return part + "...";
        else
            return text.Substring(0, lastSpaceIndexBeforeMax) + "...";
    }
    else
        return text;
}

しかし、jqueryでこれを行う方法がわかりません

あらゆる種類のヘルプや、これを達成する方法に関するあらゆる種類のヒントを歓迎します。

4

3 に答える 3

4

この一般的なタスクに対する一般的な Javascript ソリューションを次に示します。jQuery は必須ではありませんが$.trim、入力文字列をきれいに保つために使用されます。

var ellipsis = "...";

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

そしてテストするには:

sentence = "The quick brown fox jumps over a lazy dog.";

for (var i = 10; i <= 50; i += 10){
    console.log(TrimLength(sentence, i));
};

出力:

The...
The quick brown...
The quick brown fox jumps...
The quick brown fox jumps over a...
The quick brown fox jumps over a lazy dog. 

> jsFiddle デモ

また、CSS を使用して同様の効果を実現できることにも注意text-overflowしてください。これは、状況により適している可能性があります

于 2013-05-18T11:08:21.410 に答える
2
于 2013-05-18T11:01:18.300 に答える