给定下面的一组字符串

vJrwpWtwJgWrhcsFMMfFFhFp
jqHRNqRjqzjGDLGLrsFMfFZSrLrFZsSL
PmmdzqPrVvPwwTWBwg

在上面的字符串中,只有小写字母"r"在所有字符串中都是常见的.

我知道我们可以用Intersect2串中找出常见的东西,但用3串怎么做呢?

下面这段代码是我为2个字符串编写的

var commonString = firstPartOfstring
  .Intersect(secondPartOfString)
  .Select(x => x)
  .FirstOrDefault()
  .ToString();

但我找不到3根弦该怎么做

推荐答案

在一般情况下,您可以在Linq Aggregate的帮助下对字符串(lines)进行query.请注意,要从枚举(IEnumerable<char>)中获取字符串,我们应该使用Concat(),而不是ToString():

using System.Linq;

...

// Organize the strings into a collection, say, an array 
// (Set, List etc. will do as well)
string[] lines = {
  "vJrwpWtwJgWrhcsFMMfFFhFp",
  "jqHRNqRjqzjGDLGLrsFMfFZSrLrFZsSL",
  "PmmdzqPrVvPwwTWBwg",
};

...

// Query the collection above with a help of Linq:
//   We turn each string into enumeration (IEnumerable<char>)
//   Aggregate all enumerations into one with a help of Intersect
//   Concat characters of the final enumeration to the string
string commonString = string.Concat(lines
  .Select(line => line.AsEnumerable()) // we deal with IEnumerable<char>, not string
  .Aggregate((s, a) => s.Intersect(a))
  .OrderBy(c => c) // In case you want common characters being ordered
);

如果字符串中可以出现null,则将.Select(...)更改为

.Select(line => line?.AsEnumerable() ?? Array.Empty<char>())

拜托,fiddle个你自己.

如果您只想让三个字符串相交,则可以按如下方式操作:

string first = "vJrwpWtwJgWrhcsFMMfFFhFp";
string second = "jqHRNqRjqzjGDLGLrsFMfFZSrLrFZsSL";
string third = "PmmdzqPrVvPwwTWBwg";

string commonString = string.Concat(first
  .Intersect(second)
  .Intersect(third));

Csharp相关问答推荐

为什么这个Reflection. Emit代码会导致一个DDL ViolationException?

实现List T,为什么LINQ之后它不会返回MyList?<>(无法强制转换WhereListIterator `1类型的对象)'

如何将Kafka消息时间戳转换为C#中的日期和时间格式?

如何使用C#获取FireStore中的列表输出文档

更改执行目录

如何通过寻找向量长度来优化两个循环?

CA1508:';NULL=>;TRUE;始终为';TRUE';.移除或重构条件(S)以避免死代码

.NET并发词典交换值

如何在CSharp中将json字符串转换为DataTable?

在try 使用访问服务器上的文件夹时,如何解决CORS错误.NET核心API

正在寻找新的.NET8 Blazor Web应用程序.如何将.js添加到.razor页面?

获取混淆&Quot;模糊引用&Quot;错误

Xamarin.Forms-如何创建可 Select 的显示alert 或弹出窗口?

如何解决System.StackOverflowException:抛出System.StackOverflowException类型的异常.&# 39;生成随机代码时发生异常?

客户端/服务器RPC如何处理全局变量?

与Visual Studio 2022中的.NET框架相比,如何在.NET Core 6中获取错误输出的窗口句柄

Windows 10上埃及标准时间的时区偏移不正确

将ValueTask发送给调用者

阻止CLR释放已封送的双字符指针的内存?

需要帮助才能在图片框中显示C#(WinForm)中纯资源DLL中的图像