繁体   English   中英

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

[英]Get Count in List of instances contained in a string

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

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

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

所以像

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

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

非常感谢

我会尝试以下方法:

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));

如果myListList<List<string>>

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

这是一种方法,但仅限于 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 class 派上用场:

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

尝试

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

尝试

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

这仅在 myList 中的项目是单个数字时才有效

编辑:正如您可能注意到的那样,这会将 myString 多次转换为 char 数组,所以最好有

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM