字符数减去 HTML 字符 C#

2024-02-13

我试图找出一种方法来计算字符串中的字符数,截断字符串,然后返回它。但是,我需要这个函数来不计算 HTML 标签。问题是,如果它计算 HTML 标签,那么如果截断点位于标签的中间,那么页面就会出现损坏。

这就是我到目前为止所拥有的......

public string Truncate(string input, int characterLimit, string currID) {
    string output = input;

    // Check if the string is longer than the allowed amount
    // otherwise do nothing
    if (output.Length > characterLimit && characterLimit > 0) {

        // cut the string down to the maximum number of characters
        output = output.Substring(0, characterLimit);

        // Check if the character right after the truncate point was a space
        // if not, we are in the middle of a word and need to remove the rest of it
        if (input.Substring(output.Length, 1) != " ") {
            int LastSpace = output.LastIndexOf(" ");

            // if we found a space then, cut back to that space
            if (LastSpace != -1)
            {
                output = output.Substring(0, LastSpace);
            }
        }
        // end any anchors
        if (output.Contains("<a href")) {
            output += "</a>";
        }
        // Finally, add the "..." and end the paragraph
        output += "<br /><br />...<a href='Announcements.aspx?ID=" + currID + "'>see more</a></p>";
    }
    return output;
}

但我对此并不满意。有一个更好的方法吗?如果您可以为此提供一个新的解决方案,或者也许可以建议在我目前拥有的内容中添加哪些内容,那就太好了。

免责声明:我从未使用过 C#,所以我不熟悉与该语言相关的概念...我这样做是因为我必须这样做,而不是出于选择。

谢谢, 赫里斯托


使用正确的工具来解决问题。

HTML 不是一种易于解析的格式。我建议你使用经过验证的现有解析器 http://www.codeplex.com/htmlagilitypack而不是自己滚动。如果您知道您只会解析 XHTML - 那么您可以使用 XML 解析器。

这些是在 HTML 上执行操作并保留语义表示的唯一可靠方法。

不要尝试使用正则表达式。 HTML 不是一种常规语言,朝这个方向发展只会给自己带来悲伤和痛苦。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

字符数减去 HTML 字符 C# 的相关文章

随机推荐

  • Dot Net 核心应用程序的 Xunit 单元测试

    我最近开始学习单元测试 现在需要使用 Xunit 和 Moq 为 dot net core 应用程序编写单元测试 我可以编写一些非常基本的内容 但是当为复杂的类编写它们时 我有点陷入困境 下面是我将要为其编写测试的课程 public cla
  • 如何在使用maven构建的spring boot 2 java应用程序中使用groovy解释(带有spring-aop注释)?

    我有一个 spring boot 2 java 应用程序 想使用解释 未编译 的 groovy 代码来注入 aop 从阅读 spring 文档来看 这听起来像是可能的 但我找不到任何示例 AOP 建议脚本化 Bean https docs
  • 如何在没有 Spring Boot 的情况下阻止或防止 Spring MVC 4 应用程序的 XSS

    如何保护 清理采用原始 JSON 主体并通常输出 JSON 响应且不使用 Spring Boot 的应用程序 我只看到一个可能有效并使用 JsonComponent 的好例子 如果我们不使用 jsoncomponent 如何过滤掉请求以从整
  • 如何在 Fragment 上启动 Zxing?

    我有一个包含两个片段的活动 我想在其中一个片段上运行 ZXING 扫描仪 目前我在另一项类似的活动中这样做 gt new IntentIntegrator this initiateScan opens up Scan intent gt
  • 用于顺序内存访问的编译器嵌套循环优化。

    我在矩阵乘法基准测试中遇到了一个奇怪的性能问题 Metis 中的 matrix mult MOSBENCH http pdos csail mit edu mosbench 套房 基准测试经过优化 可平铺数据 使活动工作集大小为 12kb
  • 将 MongoDB 集合的子集保存到另一个集合

    我有一套像这样 date 20120101 date 20120103 date 20120104 date 20120005 date 20120105 如何将日期为 20120105 的文档子集保存到另一个集合 i e db subse
  • Arduino I2S 正弦波

    我正在开发一个项目 我想通过组合不同的正弦波来生成 简单 声音 我使用的是 arduino mkrZero 因为它内置了 I2S 接口 并且似乎有足够的处理能力来满足我的需求 I have wired my system exactly l
  • 从 Safari 中 Web 应用程序中的链接打开 iPhone 应用程序

    我正在尝试从 Safari 中的链接打开我的本机 iPhone 应用程序 我已关注这个链接 http iosdevelopertips com cocoa launching your own application via a custo
  • 如何实现React Router SPA的滚动恢复

    我正在构建一个 React 单页应用程序 我注意到滚动恢复在 Chrome 也许还有其他浏览器 中似乎没有按预期工作 在react router dom github repo上 他们有一个页面说浏览器是开始本地处理滚动 https git
  • Linq to SQL 与 Entity Framework,Microsoft 支持

    两者的优点 缺点是什么 另外 我听到了有关 Microsoft 是否会继续支持 LINQ to SQL 的各种传言 如果能提供有关此方面的进一步信息 我们将不胜感激 据我所知 根据我对上一次 PDC 的记忆 L2S 将继续得到支持 所有重点
  • EntityFramework 类上的AllowHtml 属性

    是否有不同的方法在 EntityFramework 自动生成的类的属性上设置 AllowHtml 属性 我讨厌更改自动生成的文件 因为每次更改模型时 我的更改都会丢失 但是除了使用属性之外 没有其他明显的方法可以为特定属性设置 AllowH
  • Codeigniter 的 insert_batch() 具有数千个插入,但缺少记录

    我在用着insert batch 将 10000 多行批量插入数据库的表中 我正在进行一些测试 我注意到有时所有 10 000 多行都被正确插入 但在某些情况下我在表的总计数中遗漏了 100 多行 我所拥有的记录中的字段数据没问题 因为我在
  • DataGrid RowStyle - DataTrigger 中的绑定值

    我想建立一个RowStyle这改变了Visibility行的数量 取决于两个条件 OR 默认情况下 无论布尔值 在 ViewModel 中 是否设置为 所有行都应折叠并可见True或中的一个值DataTable 绑定到Datagrid 等于
  • XHR 上传 onprogress 事件不适用于 HTTPS 连接

    我有一个通过 Angular 7 和 Node Js 将文件上传到 AWS S3 的设置 上传工作正常 但有一个问题xhr upload onprogress event 仅当通过托管服务器时才会触发此事件http 当使用https连接时
  • C# 中使用的 AForge.Video.FFMPEG

    我使用 Visual C 2008 想要从 bmp 序列写入 AVI 文件 我找到了 AForge Video VWF 但它仅适用于 vmw3 或 DIB 编解码器 我想使用 AForge Video FFMPEG 但出现错误 例如我只是编
  • ngModel 与 formControlName 位于同一表单字段上

    我曾经有一个没有任何验证的简单表单 其中 HTML 大致如下所示
  • 将字体-Awesome 图标旋转 180 度在下拉按钮内

    我创建了一些自定义按钮样式 并使用引导下拉菜单类将它们转换为下拉菜单 当我单击按钮时 我希望在下拉菜单打开时内部的 font awesome 图标旋转 180 度 并在按钮失去活动 焦点后以相反的方式旋转 180 度 返回到其原始位置 我能
  • 定义全局数组常量以在视图中使用

    我想定义全局数组常量 bootstrap php 中的代码 adv types array top gt left gt right gt bottom gt 视图文件中的代码 echo form gt input Adv type arr
  • Matplotlib:对数图中奇怪的双十年轴刻度

    我正在尝试在 Matplotlib 中制作一个涵盖数十年的双对数图 然而 返回给我的默认 x 轴刻度远非理想 因为它们一次覆盖二十个十年 其间只有 4 个刻度线 我正在使用的代码如下 rc text usetex True f ax plt
  • 字符数减去 HTML 字符 C#

    我试图找出一种方法来计算字符串中的字符数 截断字符串 然后返回它 但是 我需要这个函数来不计算 HTML 标签 问题是 如果它计算 HTML 标签 那么如果截断点位于标签的中间 那么页面就会出现损坏 这就是我到目前为止所拥有的 public