【问题标题】:Get html tags from textbox in C#从C#中的文本框获取html标签
【发布时间】:2011-04-07 08:05:31
【问题描述】:

我的 ASP.NET Web 应用程序中有一个文本区域,用于输入 html 代码。现在还有一个按钮控件,点击后应该只检索文本框中某些 html 标记之间的文本。

例如:

1) 用户输入 html 代码,包括标签等,然后点击 OK 按钮 2) 在我的代码中,文本区域中的文本被检索,只有<p></p> 标记之间的部分应保存到字符串对象中。

我显然可以从文本区域获取文本并将其附加到字符串对象,但我无法弄清楚如何在某个 html 标记(如 <p></p>)中获取文本。有人可以帮帮我吗?

【问题讨论】:

  • 在您的问题中,您特别询问“如何在某个 html 标记中获取文本,例如

    ”。当@Vash 和@PieterG 说删除 HTML 标签时,他们说的是从

    标签之间提取文本的副本,而不是从原始标签中删除 html。

标签: c# asp.net html textbox


【解决方案1】:

试试这个...取自 MSDN 的示例并稍作修改以显示您的情况:

using System;
using System.Text.RegularExpressions;

class Example 
{
   static void Main() 
   {
      string text = "start <p>I want to capture this</p> end";
      string pat = @""<p>((?:.|\r|\n)+?)</p>"";

      // Instantiate the regular expression object.
      Regex r = new Regex(pat, RegexOptions.IgnoreCase);

      // Match the regular expression pattern against a text string.
      Match m = r.Match(text);
      int matchCount = 0;
      while (m.Success) 
      {
         Console.WriteLine("Match"+ (++matchCount));
         for (int i = 1; i <= 2; i++) 
         {
            Group g = m.Groups[i];
            Console.WriteLine("Group"+i+"='" + g + "'");
            CaptureCollection cc = g.Captures;
            for (int j = 0; j < cc.Count; j++) 
            {
               Capture c = cc[j];
               System.Console.WriteLine("Capture"+j+"='" + c + "', Position="+c.Index);
            }
         }
         m = m.NextMatch();
      }
   }
}

您可以在 ideone.com 看到这一点。

如果你想在结果中包含&lt;p&gt; 标签,那么只需将正则表达式中括号的位置更改为:

string pat = @"(<p>(?:.|\r|\n)+?</p>)";

【讨论】:

  • @BG100 如果您显示此代码的一些示例输出,它将对原始发帖人有所帮助。然后他们可能会看到这是否是他们想要的。
  • 您好,感谢您的回答。它看起来适合我的情况 - 我不确定您的代码中“组”和“捕获”之间的区别是什么?
  • 在 RegEx 中,捕获分为捕获组。在这种情况下,如果您有一组以上的

    标记,那么您将获得两个捕获,用于同一个捕获组。

  • 优秀。看起来正是我需要的东西。
  • 嗨,只是想知道 - 当我在同一组中有两组

    标签时,这似乎不起作用? - ideone.com/sxwIG
猜你喜欢
  • 2017-06-11
  • 2019-01-19
  • 1970-01-01
  • 2012-06-26
  • 1970-01-01
  • 1970-01-01
  • 2021-05-05
相关资源
最近更新 更多