asp.net - 获取包含 HTML 标签的文本子串

标签 asp.net html string

获取包含HTML标签的文本子串

假设您需要以下内容的前 10 个字符:

"

这是第1段

这是第2段

"

输出将是:

这是”

返回的文本包含一个未闭合的 P 标签。如果将其呈现到页面,则后续内容将受到打开的 P 标记的影响。理想情况下,首选输出将关闭所有未关闭的 HTML 标记,而不是打开它们的时间:

这是

” 我想要一个返回 HTML 子字符串的函数,确保没有未关闭的标签

最佳答案

您需要教会您的代码如何理解您的字符串实际上是 HTML 或 XML。仅仅把它当作一个字符串来对待它不会让你按照你想要的方式使用它。这意味着首先将其转换为正确的格式,然后使用该格式。

使用 XSL 样式表

如果您的 HTML 是格式正确的 XML,请将其加载到 XMLDocument 中并通过执行类似以下操作的 XSL 样式表运行它:

<xsl:template match="p">
  <xsl:value-of select="substring(text(), 0, 10)" />
</xsl:template>

使用 HTML 解析器

如果它不是格式正确的 XML(如在您的示例中,中间突然有一个 </p>),您将需要使用 a HTML parser of some kind ,例如 HTML Agility Pack (参见 question about C# HTML parsers)。

不要使用正则表达式,因为 HTML is too complex to parse using regex .

关于asp.net - 获取包含 HTML 标签的文本子串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/759342/

相关文章:

c# - 使用 RegisterStartupScript 后的 C# 代码未调用 jQuery 函数

python - 如何修改数据库管理器中的重复表单?

python - 为什么 Python 在 if 语句中将字符串/数字评估为 True 而 myNumber == True 返回 False?

java - 如何将逗号分隔的字符串转换为字符串,每个字符串都用单引号括起来并用逗号分隔

c++ - 重载一个简单的 = 运算符

c# - Db.SaveChanges 在插入后不分配主键 ID - Code First Entity Framework

php - 关闭浏览器后保留 PHP session

asp.net - 每个域最多 20 个 cookie - 为什么?

html - div 中的内容被下推

javascript - 在不同的 id 上使用 jquery 切换 CSS 类