2009-06-16 164 views
5

當在我的asp.net項目顯示的差異,我有兩個字符串(實際上,它們被存儲在一個會話對象,然後我做的ToString())C# - 比較字符串

該項目的一部分我的免費日語練習在我的網站上(意大利語只爲現在,所以我不會鏈接/垃圾郵件)

現在我做一個if (original == inputted.ToLower()),但我想比較字符串,並突出顯示屏幕上的差異

是這樣的:

原:hiroyashi
寫道用戶:浩

我想比較兩個字符串並保存在另一個變量上的差異,HTML標記,然後顯示它在文字控制...但是......如果差異很大,或者投入較短......怎麼做?

它看起來有需要大量的編碼...或不?

+0

「y」是共同的,所以它爲什麼突出顯示爲差異? – 2009-06-16 15:13:10

+0

假設這是一個錯誤,這是一個非常着名的問題,通常稱爲最長公共子序列問題;我相信你可以找到找到字符串LCS的算法的例子。這裏是我關於如何在JScript中使用數組來完成它的文章,但是您可以很容易地將其應用於C#中的字符序列:http://blogs.msdn.com/ericlippert/archive/2004/07/21/189974.aspx – 2009-06-16 15:14:17

回答

3

我似乎記得有人在不久前提出這個問題,而且他們基本上都指出了不同的引擎。

在CodePlex上快速搜索帶來了: http://www.codeplex.com/site/search?projectSearchText=diff

可能是值得一狩獵通過一些那些拿出的 - 你可以塞東西到你的現有代碼?

乾杯, 特里

0

我不知道這將是有益的,但是這是一種方法,我會做:

我會用一個HashMap,並存儲空間有獨立的所有單詞。 然後使用它我會映射與原來的。

如果不同,可以添加html標籤或其他東西。

在大詞典中這裏肯定會出現性能問題 雖然編碼本身不會很長。

2

John Resig寫了一個javascript diff algorithm,但他刪除了頁面,解釋他的網站做了什麼。儘管如此,它仍然可以通過google cache獲得。 道歉,如果鏈接是不好的約翰。它應該做你想要的,別人把它,調整它,並把它放在一起here - 完成一個test page