显示html编码文本中的x个单词

本文关键字:单词 html 编码 文本 显示 | 更新日期: 2023-09-27 18:26:17

我使用以下代码显示数据库中的html编码文本:

@Html.Raw(HttpUtility.HtmlDecode(@item.Content))

例如,我现在想做的是只显示20个单词的内容,并在末尾显示"…"。我该怎么做?我想为IHtmlString添加一个助手,但我不知道如何返回IHtmlString 的x个单词

显示html编码文本中的x个单词

我该怎么做?

您可以编写一个自定义HTML助手,负责将输入字符串解析为组成单词,并获取其中的第一个x

public static class HtmlExtensions
{
    private readonly static Regex _wordsRegex = new Regex(
        @"'s", RegexOptions.Compiled
    );
    public static IHtmlString FormatMessage(
        this HtmlHelper htmlHelper, 
        string message, 
        int count = 20
    )
    {
        if (string.IsNullOrEmpty(message))
        {
            return new HtmlString(string.Empty);
        }
        var words = _wordsRegex.Split(message);
        if (words.Length < count)
        {
            return new HtmlString(htmlHelper.Encode(message));
        }
        var result = string.Join(
            " ", 
            words.Select(w => htmlHelper.Encode(w)).Take(count)
        );
        return new HtmlString(result + " ...");
    }
}

在您看来可以使用:

@Html.FormatMessage(item.Content)

或者,如果您想指定不同数量的单词,请使用

@Html.FormatMessage(item.Content, 5)