.net – 比较文本并获得差异
|
好吧,我想比较2个字符串(版本1和版本2),并获得我可以自己转换为html的格式的差异,就像你可以在stackoverflow上查看如何编辑帖子或像svn跟踪修订版本之间的差异…. 它必须是完整的托管代码库. 像this JavaScript,但我需要在服务器端做它.. 解决方法我有一个类库,我会在下面发布一个链接,但我也会发布它的工作方式,以便你可以评估它是否适合你的内容.请注意,对于我在下面说的所有内容,如果您将每个字符视为集合的元素,则可以针对任何类型的内容实现下面描述的算法.无论是字符串的字符,文本行,ORM对象的集合. 整个算法围绕longest-common-substring(LCS),是一种递归方法. 首先,算法试图找到两者之间的LCS.这将是两个版本之间保持不变/相同的最长部分.然后算法将这两个部分视为“对齐”. 例如,以下是两个示例字符串的对齐方式: This long text has some text in the middle that will be found by LCS
This extra long text has some text in the middle that should be found by LCS
^-------- longest common substring --------^
然后它递归地将自身应用于对齐部分之前的部分,以及之后的部分. 最终的“结果”看起来像这样(我使用下划线表示其中一个字符串中的“not there”部分): This ______long text has some text in the middle that ______will be found by LCS This extra long text has some text in the middle that should____ be found by LCS 然后,作为递归方法的一部分,每个级别的递归调用将返回一个“操作”集合,这些操作基于是否存在LCS或任一部分中缺少部分,将按如下方式吐出: >如果是LCS,那么它就是“复制”操作 所以上面的文字是: >复制5个字符(本) 该算法的核心非常简单,如果您愿意,在上述文本中,您应该能够自己实现它. 我的类库中有一些额外的功能,特别是处理类似于已更改文本的内容,这样您不仅可以获取删除或插入操作,还可以修改操作,这一点非常重要.你正在比较一些东西,比如文本文件中的行. 类库可以在这里找到:DiffLib on CodePlex,你也可以在Nuget上找到它,以便在Visual Studio 2010中轻松安装.它是用C#编写的.NET 3.5及更高版本,所以它适用于.NET 3.5和4.0,以及因为它是一个二进制版本(所有源代码都在CodePlex上),你也可以在VB.NET中使用它. (编辑:安卓应用网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- asp.net – web.config转换未在VS2010中显示
- 谈谈ASP.NET Core中的ResponseCaching
- asp.net – viewstate到期了吗?
- asp.net-mvc-4 – 与TinyMCE绑定的MVC4
- asp.net-mvc – 实现IModelBinder的最佳实践
- asp.net – 哪个更适合性能视图状态或会话
- asp.net-mvc – 单元测试我的控制器方法导致一个空的ViewNa
- ASP.NET CoreEntityFramework核心:左(外)加入Linq
- asp.net – 用于DropDownList的MVC2 EditorTemplate
- asp.net – HttpContext.Current不解析在MVC 4项目
- asp.net – 如果Ninject尚未绑定,如何在Ninject中
- ASP.NET与IIS VS PHP与Apache
- 如何避免异常捕获.NET中的复制粘贴
- .net – 编译器错误消息:编译器失败,错误代码为
- asp.net-mvc – 使用CORS在WebAPI中将text / pla
- asp.net-mvc-3 – 超时在ASP.Net MVC FormsAuthe
- asp.net-mvc-3 – System.Web.Mvc.HtmlHelper’不
- asp.net-mvc – 使用ASP.Net MVC中的模型绑定器更
- asp.net-mvc – ASP.NET MVC jQueryUI datepicke
- asp.net-mvc – ASP.NET MVC ModelMetaData:有没
