【问题标题】:How would I Strip Html from a string and set a character limit?如何从字符串中剥离 Html 并设置字符限制?
【发布时间】:2016-04-04 22:10:05
【问题描述】:

我正在从项目列表中获取一个字符串,该字符串当前显示为“item.ItemDescription”(下面的第 9 行)

我想从这个字符串中去掉 all html。并在 html 被剥离后设置 250 个字符限制。 有没有一种简单的方法可以做到这一点? 我看到有一个帖子说要安装 HTML Agility Pack,但我正在寻找更简单的东西。

编辑:
它并不总是包含 html,如果客户想在描述中的项目名称中添加粗体或斜体标记,它将显示为 项目名称
"> 例如,我想剥离无论输入什么,都输出所有 html。

<tbody>
    @foreach (var itemin Model.itemList)
    {
        <tr id="@("__filterItem_" + item.EntityId + "_" + item.EntityTypeId)">
            <td>
                @Html.ActionLink(item.ItemName, "Details", "Item", new { id = item.EntityId }, null)
            </td>
            <td>
                item.ItemDescription
            </td>
            <td>
                @if (Model.IsOwner)
                {
                    <a class="btnDelete" title="Delete" itemid="@(item.EntityId)" entitytype="@item.EntityTypeId" filterid="@Model.Id">Delete</a>
                }
            </td>

        </tr>
    }
</tbody>

【问题讨论】:

  • 您是说item.Description 包含类似&lt;input type="text" value="blah blah blah" /&gt; 的值?
  • 呃它本质上会显示为 "blah blah blah",但它会包含值 yes。
  • @Veda99817 您可以从item.ItemDescription 中获取字符串并将maxlength 属性应用于元素或在生成此字符串的后端设置此属性。
  • 您的代码中已经有一个&lt;td&gt;...抱歉,为什么要这样做呢?这似乎是一种糟糕的渲染方式。
  • 我当前的应用程序正在使用 Angular,但不幸的是,对于客户来说,这是一个较旧的项目,所以我必须尽我所能。

标签: c# html asp.net-mvc string


【解决方案1】:

您最好的选择 IMO 是晚上进入解析所有可能值的噩梦,为什么不简单地将 class=someCssClassName 作为属性注入到 &lt;td&gt; 中。然后控制长度,用 CSS 着色。

一个更好的主意是将class 分配给包含&lt;tr class=trClass&gt;,然后让CSS 将长度应用于子&lt;td&gt; 元素。

【讨论】:

  • 将 css 应用于 td tr 将不起作用。 item.desc 包含带有 input 元素的 HTML 字符串。我相信 OP 正在使用 table 进行布局。需要在input 元素上添加类。
【解决方案2】:

您可以执行这样的操作来从字符串中删除所有标签(打开、关闭和自动关闭),但它可能会产生意外的结果,即删除用户输入的不应该是 html 标签的内容:

text = Regex.Replace(text, "<\/?[^>]*\/?>", String.Empty);

相反,我会推荐这样的东西,让用户知道不支持 html:

text = text.Replace("<", "&lt;");
text = text.Replace(">", "&gt;");

请记住在转换前检查您的 250 个字符限制:

text = text.Substring(0, 250);

【讨论】:

    【解决方案3】:

    此正则表达式将选择任何 html 标签(包括带有双引号的标签,例如 :

    <[^>]*>
    

    看这里:http://regexr.com/3cge4

    Using C# regular expressions to remove HTML tags

    从那里,您可以简单地检查字符串大小并正确显示。

    var itemDescriptionStripped = Regex.Replace(item.ItemDescription, @"<[^>]*>", String.Empty);
    if (itemDescriptionStripped.Length >= 250)
        itemDescriptionStripped.Substring(0,249);
    else
        itemDescriptionStripped;
    

    【讨论】:

      猜你喜欢
      • 2012-09-30
      • 2011-11-16
      • 1970-01-01
      • 1970-01-01
      • 2018-04-20
      • 2010-09-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多