在收集使用Except
陣列取第一集合中的所有項目,除了(由類型平等)項中的第二個。由於您的類型是string
s它們是char
s的集合。你不需要Except
,但要檢查哪些字是不同的。
使用Split
得到的字符串,其中每個是一個詞的集合,然後用Zip
句子比較同一位置的話:
var string1 = "My Name is Something. I do nothing";
var string2 = "My Name is Momething. I do othing";
var result = string1.Split(' ').Zip(string2.Split(' '), (s1, s2) => new { s1, s2 })
.Where(p => p.s1 != p.s2);
如果你想確保你做不是隻有空格的部分可以拆分這樣太:
Split(new char[] { ' ' }, StringSplitOptions.RemoveEmptyEntries)
爲了把它放回一個字符串帶標記的差異(例如用<b>
圍繞它的HTML大膽,你可以這樣做:
var result = string.Join(" ", string1.Split(' ')
.Zip(string2.Split(' '), (s1, s2) => new { s1, s2 })
.Select(pair => pair.s1 != pair.s2 ? $"<b>{pair.s2}</b>" : pair.s1));
你嘗試過什麼迄今爲止最簡單的方法是什麼? – ne1410s
我試過這個「var difference = string1.Except(string2).ToArray()」這會給出不同的數組 – Ravi
任何人都可以告訴我爲什麼downvoted ?? – Ravi