获取字符串中包含的实例列表中的计数

本文关键字:列表 实例 包含 获取 字符串 | 更新日期: 2023-09-27 18:01:46

我有一个字符串包含多达9 唯一的数字从1到9 (myString),例如。"12345"

我有一个字符串列表{"1"},{"4"}(myList) ..等等。

我想知道字符串(myString)中有多少个实例包含在列表(myList)中,在上面的示例中,这将返回2。

所以像

count = myList.Count(myList.Contains(myString));

如果需要,我可以将myString更改为列表。

Thanks very much

获取字符串中包含的实例列表中的计数

我会尝试如下:

count = mylist.Count(s => myString.Contains(s));

您需要什么并不十分清楚,但这些选项可能会有所帮助:

myList.Where(s => s == myString).Count()

myList.Where(s => s.Contains(myString)).Count()

第一个返回列表中与您的列表相同的字符串的个数,第二个返回包含您的列表的字符串的个数。

如果myList只是List<string>,那么这应该工作:

int count = myList.Count(x => myString.Contains(x));

myList = List<List<string>>:

int count = myList.SelectMany(x => x).Count(s => myString.Contains(s));

Try

count = myList.Count(s => s==myString);

这是一种方法,但它仅限于1个字符匹配。对于您所描述的从1到9的数字场景,这工作得很好。注意s[0]的用法,它将列表项引用为一个字符。例如,如果你的列表中有"12",它将无法正常工作。

string input = "123456123";
var list = new List<string> { "1", "4" };
var query = list.Select(s => new
                {
                    Value = s,
                    Count = input.Count(c => c == s[0])
                });
foreach (var item in query)
{
    Console.WriteLine("{0} occurred {1} time(s)", item.Value, item.Count);
}

对于多个字符匹配,它将正确地计算"12"的出现次数,Regex类会派上用场:

var query = list.Select(s => new
                {
                    Value = s,
                    Count = Regex.Matches(input, s).Count
                });

try

var count = myList.Count(x => myString.ToCharArray().Contains(x[0]));

只有当myList中的条目是一个单位数

时才会起作用

Edit:正如您可能注意到的那样,这将多次将myString转换为字符数组,因此最好使用

var myStringArray = myString.ToCharArray();
var count = myList.Count(x => myStringArray.Contains(x[0]));