Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 计算字符串在字符串中出现的次数_C#_String_Count - Fatal编程技术网

C# 计算字符串在字符串中出现的次数

C# 计算字符串在字符串中出现的次数,c#,string,count,C#,String,Count,我只是有一个字符串,看起来像这样: string searchText = "7,true,NA,false:67,false,NA,false:5,false,NA,false:5,false,NA,false"; string regexPattern = @"\btrue\b"; int numberOfTrues = Regex.Matches(searchText, regexPattern).Count; 7,真,不,假:67,假,不,假:5,假,不,假:5,假,不,不,假 我只想

我只是有一个字符串,看起来像这样:

string searchText = "7,true,NA,false:67,false,NA,false:5,false,NA,false:5,false,NA,false";
string regexPattern = @"\btrue\b";
int numberOfTrues = Regex.Matches(searchText, regexPattern).Count;
7,真,不,假:67,假,不,假:5,假,不,假:5,假,不,不,假


我只想计算字符串“true”在该字符串中出现的次数。我觉得答案就像是字符串。count这个字符串出现在字符串()中的所有时间,但由于某种原因,我就是想不出来。帮助?

如果字符串可以包含类似“true”的字符串,则此操作将失败

Regex.Matches(input, "true").Count

这样做,请注意,您必须为“test”定义正则表达式

string s = "7,true,NA,false:67,false,NA,false:5,false,NA,false:5,false,NA,false";
string[] parts = (new Regex("")).Split(s);
//just do a count on parts
和林克

string s = "7,true,NA,false:67,false,NA,false:5,false,NA,false:5,false,NA,false";
var count = s.Split(new[] {',', ':'}).Count(s => s == "true" );

您的正则表达式应该是
\b真的\b
,以避免Casper提出的“误解”问题。完整的解决方案如下所示:

string searchText = "7,true,NA,false:67,false,NA,false:5,false,NA,false:5,false,NA,false";
string regexPattern = @"\btrue\b";
int numberOfTrues = Regex.Matches(searchText, regexPattern).Count;

确保文件顶部包含System.Text.RegularExpressions命名空间。

可能不是最有效的,但认为这是一种简洁的方法

class Program
{
    static void Main(string[] args)
    {
        Console.WriteLine(CountAllTheTimesThisStringAppearsInThatString("7,true,NA,false:67,false,NA,false:5,false,NA,false:5,false,NA,false", "true"));
        Console.WriteLine(CountAllTheTimesThisStringAppearsInThatString("7,true,NA,false:67,false,NA,false:5,false,NA,false:5,false,NA,false", "false"));

    }

    static Int32 CountAllTheTimesThisStringAppearsInThatString(string orig, string find)
    {
        var s2 = orig.Replace(find,"");
        return (orig.Length - s2.Length) / find.Length;
    }
}

在这里,我将使用LINQ重新构建答案。这表明煮鸡蛋的方法不止n种:

public int countTrue(string data)
{
    string[] splitdata = data.Split(',');

    var results = from p in splitdata
            where p.Contains("true")
            select p;

    return results.Count();
}

@jball我认为所有的解决方案都是用来计算character@AakashM,请看第二个链接。此外,这是一个完美的机会,可以为该问题提供更正确的答案(即基于字符串,而不是基于字符)。请参阅我很高兴您不为Microsoft工作,并获得命名方法!仅以简洁为基础——你赢了;)C#字符串中没有匹配项。哎呀。正则表达式。别担心为什么我们要转义
输入
它不是正则表达式?@tpower,和我的问题一样。我研究了
Regex.Escape
,并在LINQPad中运行了测试来确认。我编辑了编辑以删除它。哈哈-我应该将您的标记为正确的,仅用于使用我建议的方法名称。:)感谢它的工作,也很好和聪明:)字符串变量不应该被称为Regex-它与.NET Regex类名本身冲突。