比较两个字符串并获得差异

我如何比较c#中的两个字符串并获得差异?

例如:

String1:我有车

string2:我有一辆新车宝马

结果:新的,宝马

您需要确保较大的集合位于Except的左侧(不确定是否有纯Linq方式来实现):

  static void Main(string[] args) { string s1 = "i have a car a car"; string s2 = "i have a new car bmw"; List diff; IEnumerable set1 = s1.Split(' ').Distinct(); IEnumerable set2 = s2.Split(' ').Distinct(); if (set2.Count() > set1.Count()) { diff = set2.Except(set1).ToList(); } else { diff = set1.Except(set2).ToList(); } } 

基于你的问题(这有点模糊。)这应该工作。

 var first = string1.Split(' '); var second = string2.Split(' '); var primary = first.Length > second.Length ? first : second; var secondary = primary == second ? first : second; var difference = primary.Except(secondary).ToArray(); 

在文件的顶部,请确保包括:

 using System.Linq; 

您可以使用差异算法执行此任务。 论文“ An O(ND)差分算法及其变化 ”描述了一种非常强大的算法来完成这项任务。 对于C#中的实现,你可以看一下“ 用于C#的O(ND)差分算法 ”,但是恕我直言,看看论文并自己实现它以确保你感兴趣该算法的工作原理如何。