查找一个字符串中有多少条目在另一个字符串中
Find how many entries in a string are in another string
如果StringOne
是:
Cat
Cat
Bird
Dog
如果 StringTwo
是
,我如何获得三个中的 3
Cat
Bird
public static void FindNumberOfSimilarStrings()
{
string[] var = StringOne();
foreach(string line in StringTwo())
{
foreach(string entry in var)
{
if (input.IndexOf(line, StringComparison.OrdinalIgnoreCase) >= 0)
{
Console.WriteLine(line);
instances++;
}
}
}
注意:上面的代码需要这样才能独立于程序扩展StringTwo。这意味着StringTwo
实际上是一个文件,其数据是通过这样获取的:
public static string[] StringTwo()
{
return File.ReadAllLines(path);
}
和StringOne
像这样:
public static string[] StringOne()
{
return Program.textVariable.Split(' ');
}
原字符串是“Cat cat bird dog”,因为有拆分功能所以应该这样处理。我也希望它忽略大小写。
Cat
Cat
Bird
Dog
只要有解决办法,就可以了。
更新
考虑到您只想知道第一个集合中的单个字符串在第二个字符串集合中出现了多少个实例。
var firstStrArray = new string[] { "Cat", "Cat", "Bird", "Dog" };
var secondStrArray = new string[] { "Cat", "Bird" };
var firstStrArrayGroups = firstStrArray.GroupBy(row => row.Trim()).Select(row => new { row.Key, Count = row.Count() }).ToList();
var secondStrArrayGroups = secondStrArray.GroupBy(row => row.Trim()).Select(row => new { row.Key, Count = row.Count() }).ToList();
foreach (var item in firstStrArrayGroups)
{
if (!secondStrArrayGroups.Any(row => row.Key.ToLower() == item.Key.ToLower()))
{
Console.WriteLine($"No Instance of => {item.Key} occured in second array.");
continue;
}
Console.WriteLine($"{secondStrArrayGroups.FirstOrDefault(row => row.Key.ToLower() == item.Key.ToLower()).Count} Instance of => {item.Key} occured in second array.");
}
哪个结果将是:
最后一种方法显示了在两个集合中出现了多少个字符串实例,对于造成的误解深表歉意。
我有点过火了,添加了一些细节,例如 Trim()
和 ToLower()
如果它们与您的业务不匹配,请将其删除。
如果StringOne
是:
Cat
Cat
Bird
Dog
如果 StringTwo
是
3
Cat
Bird
public static void FindNumberOfSimilarStrings()
{
string[] var = StringOne();
foreach(string line in StringTwo())
{
foreach(string entry in var)
{
if (input.IndexOf(line, StringComparison.OrdinalIgnoreCase) >= 0)
{
Console.WriteLine(line);
instances++;
}
}
}
注意:上面的代码需要这样才能独立于程序扩展StringTwo。这意味着StringTwo
实际上是一个文件,其数据是通过这样获取的:
public static string[] StringTwo()
{
return File.ReadAllLines(path);
}
和StringOne
像这样:
public static string[] StringOne()
{
return Program.textVariable.Split(' ');
}
原字符串是“Cat cat bird dog”,因为有拆分功能所以应该这样处理。我也希望它忽略大小写。
Cat
Cat
Bird
Dog
只要有解决办法,就可以了。
更新
考虑到您只想知道第一个集合中的单个字符串在第二个字符串集合中出现了多少个实例。
var firstStrArray = new string[] { "Cat", "Cat", "Bird", "Dog" };
var secondStrArray = new string[] { "Cat", "Bird" };
var firstStrArrayGroups = firstStrArray.GroupBy(row => row.Trim()).Select(row => new { row.Key, Count = row.Count() }).ToList();
var secondStrArrayGroups = secondStrArray.GroupBy(row => row.Trim()).Select(row => new { row.Key, Count = row.Count() }).ToList();
foreach (var item in firstStrArrayGroups)
{
if (!secondStrArrayGroups.Any(row => row.Key.ToLower() == item.Key.ToLower()))
{
Console.WriteLine($"No Instance of => {item.Key} occured in second array.");
continue;
}
Console.WriteLine($"{secondStrArrayGroups.FirstOrDefault(row => row.Key.ToLower() == item.Key.ToLower()).Count} Instance of => {item.Key} occured in second array.");
}
哪个结果将是:
最后一种方法显示了在两个集合中出现了多少个字符串实例,对于造成的误解深表歉意。
我有点过火了,添加了一些细节,例如 Trim()
和 ToLower()
如果它们与您的业务不匹配,请将其删除。