1

テキストが長すぎる場合は切り捨てたいのですが、単語全体を切り捨てる必要があります。私は次のことをしました:

 var mktText = model.Product.MarketingText;
            var countChars = mktText.Length;
            if (countChars > 180)
            {
                countChars = countChars - 180;
                mktText = mktText.Remove(180, countChars);
                mktText = mktText + "...";
            }

このコードは最大を 180 文字に設定しますが、完全な単語ではなく単語を半分にカットします。

任意のヘルプをいただければ幸いです。

ありがとう

4

5 に答える 5

1

文字列の作成には十分注意してください。

代わりに、次のようなことを試してください。

public static class StringExtensions
{
    public static string Truncate(this string text, int length)
    {
        var sb = new StringBuilder(text);

        var i = Math.Min(length, sb.Length);
        if ((sb.Length > length) && !char.IsWhiteSpace(sb[i]))
        {
            while ((--i >= 0) && !char.IsWhiteSpace(sb[i]))
            {
            }
        }

        if (i > 0)
        {
            while ((--i >= 0) && char.IsWhiteSpace(sb[i]))
            {
            }
        }

        return sb.ToString(0, i + 1);
    }
}
于 2013-04-26T14:21:49.470 に答える
0

これにより、必要なものが得られますが、いくつかの小さな調整が必要です。

編集:変数/名前を使用するように調整され、最大長は 180 など:

var mktText = model.Product.MarketingText;
var cutPos = new string(mktText.Take(180).ToArray()).LastIndexOf(' ');
var result = new string(mktText.Take(cutPos).ToArray());
于 2013-04-26T12:38:32.850 に答える