Mit Except
auf einer Sammlung nimmt alle Elemente der ersten Sammlung außer (von Typen Gleichheit) Elemente in der zweiten. Als Ihre Typen sind string
s sie sind Sammlungen von char
s. Du willst nicht Except
, sondern prüfen, welche Wörter unterschiedlich sind.
Verwenden Split
eine Sammlung von Zeichenketten zu erhalten, wobei jedes ein Wort, und dann Zip
verwenden Worte von derselben Position im Satz zu vergleichen:
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);
Wenn Sie sicherstellen möchten Sie tun nicht Abschnitte nur Räume haben, können Sie wie diese spalten:
Split(new char[] { ' ' }, StringSplitOptions.RemoveEmptyEntries)
Um es mit Markierung der Unterschiede in einem einzelnen String zurücklegen (zB mit <b>
für HTML-Umgebung fett Sie dies tun können:
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));
zu tun Was haben Sie bisher versucht? – ne1410s
Ich versuchte dies "var difference = string1.Except (string2). ToArray()" dies wird das Array von Differenzen geben – Ravi
Kann mir jemand sagen, warum downvoted ?? – Ravi