.net 有没有好的方法或者类 实现两个字符串的比较,并返回不同的字符串

2016-02-14 17:32:39 +08:00
 pyengwoei
比如
string a="aaaaaaaa";
string b="aaaabaaaac";

不同的地方就有两个 “ b ” 和 “ c ”
2663 次点击
所在节点    程序员
12 条回复
wwlzz
2016-02-14 17:34:05 +08:00
请搜索关键字 longest common string :)
breeswish
2016-02-14 17:36:57 +08:00
你需要字符串 diff 算法
pyengwoei
2016-02-14 17:42:30 +08:00
@breeswish 是的 找到一个 Diff.cs 不会用
public static Item [] DiffText(string TextA, string TextB, bool trimSpace, bool ignoreSpace, bool ignoreCase) {
wwlzz
2016-02-14 17:44:53 +08:00
https://en.wikibooks.org/wiki/Algorithm_Implementation/Strings/Longest_common_substring#Retrieve_the_Longest_Substring
说一个简单的思路,找到两个字符串最长子字符串,认为是相同的,剩下部分递归执行上面算法,直到剩下的字符串长度小于等于 1 ,算法参考上面的链接。
breeswish
2016-02-14 17:55:59 +08:00
@pyengwoei diff 一般返回的包括新增了哪些、删除了哪些,或者可能还有移动了哪些,修改了哪些..
pyengwoei
2016-02-14 18:00:50 +08:00
@breeswish 这个 diff 算法 可以去哪里找到啦 ,呵呵
pyengwoei
2016-02-14 18:01:11 +08:00
@wwlzz 好的,正在查看
pyengwoei
2016-02-15 09:37:23 +08:00
@wwlzz 我在测试中,非常感谢
jsq2627
2016-02-15 12:40:57 +08:00
wwlzz
2016-02-15 13:33:34 +08:00
我简单看了下你贴的 DiffTextClass.cs 里面的算法,其中 LCS 这个方法就是我说的最小子字符串算法,思路就是我回复里面描述的那种
pyengwoei
2016-02-15 15:00:54 +08:00
@jsq2627 现在我知道什么是大神和菜鸟的区别了
pyengwoei
2016-02-15 15:06:45 +08:00
@wwlzz 好的 谢谢了

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/256446

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX