【问题标题】:C# - Show the differences when comparing stringsC# - 比较字符串时显示差异
【发布时间】:2009-06-16 18:50:56
【问题描述】:

在我的 asp.net 项目中,我有两个字符串(实际上,它们存储在一个 Session 对象中,然后我执行一个 .ToString() )

这个项目是我网站上免费日语练习的一部分(现在只有意大利语,所以我不会链接/垃圾邮件)

现在我做一个if (original == inputted.ToLower()),但我想比较字符串并在屏幕上突出显示差异

像这样:

原文:hiroyashi
作者:hiroyoshi

我正在考虑比较两个字符串并将差异保存在另一个变量中,使用 HTML 标记,然后将其显示在文字控件上......但是......如果差异很大,或者输入更短。 .. 怎么做?

看起来需要大量的编码......还是不需要?

【问题讨论】:

  • “y”是共同点,为什么要突出显示差异?
  • 假设这是一个错误,这是一个非常著名的问题,通常称为最长公共子序列问题;我相信您可以找到找到字符串 LCS 的算法示例。这是我关于如何在 JScript 中处理数组的文章,但您可以很容易地将其调整为 C# 中的字符序列:blogs.msdn.com/ericlippert/archive/2004/07/21/189974.aspx
  • 啊,我忘了添加另一个难度元素:Y 突出显示,因为我在日语中显示了错误的 SYLLABLE
  • 好的,如果你能想出两个音节数组,那么你可以使用 LCS 算法找出哪些音节是共同的,哪些不是。
  • 谢谢你的评论,它把我推向了正确的方向:) è_é 编码进行中 è_é

标签: c# asp.net string


【解决方案1】:

我似乎记得不久前有人问过这个问题,基本上他们是针对不同的引擎。

对 codeplex 的快速搜索显示: http://www.codeplex.com/site/search?projectSearchText=diff

可能值得通过其中的一些来寻找 - 您可以将一些东西插入到您现有的代码中?

干杯, 特里

【解决方案2】:

John Resig 写了一个javascript diff algorithm,但他从他的网站上删除了解释它的作用的页面。不过,它仍然可以通过google cache 获得。 抱歉,如果链接不好,约翰。它应该做你想做的事,其他人拿走了它,调整了它并发表了一篇关于它的文章here - 完成test page

【讨论】:

    【解决方案3】:

    我不确定这是否会有所帮助,但我会这样做:

    我会使用哈希图,并将所有单词以空格分隔。 然后使用它,我将与原件进行映射。

    您可以添加 html 标签或其他标签(如果它们不同)。

    在大型词典中肯定存在性能问题 不过编码本身不会很长。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-10-02
      • 2022-06-22
      • 1970-01-01
      • 1970-01-01
      • 2016-03-26
      • 1970-01-01
      相关资源
      最近更新 更多