C# 在一个字符串中计算\r\r

C# 在一个字符串中计算\r\r,c#,string,C#,String,我想计算字符串变量中\r\r的频率 例如: string sampleString = "9zogl22n\r\r\nv4bv79gy\r\r\nkaz73ji8\r\r\nxw0w91qq\r\r\ns05jxqxx\r\r\nw08qsxh0\r\r\nuyggbaec\r\r\nu2izr6y6\r\r\n106iha5t\r"; 结果将出现在本例8中。您可以使用LINQ选择\r\r开始的所有位置并对其进行计数: Enumerable.Range(0, s.Length).Where(i

我想计算字符串变量中
\r\r
的频率

例如:

string sampleString = "9zogl22n\r\r\nv4bv79gy\r\r\nkaz73ji8\r\r\nxw0w91qq\r\r\ns05jxqxx\r\r\nw08qsxh0\r\r\nuyggbaec\r\r\nu2izr6y6\r\r\n106iha5t\r";

结果将出现在本例8中。

您可以使用LINQ选择
\r\r
开始的所有位置并对其进行计数:

Enumerable.Range(0, s.Length).Where(idx => s.IndexOf(@"\r\r", idx)==idx).Count();

请注意,
“\r\r\r”
将在上述代码中返回2…

您可以使用LINQ选择
\r\r
开始的所有位置并对其进行计数:

Enumerable.Range(0, s.Length).Where(idx => s.IndexOf(@"\r\r", idx)==idx).Count();

请注意,
“\r\r\r”
将在上述代码中返回2…

您可以使用正则表达式:

var res = Regex.Matches(s, "\r\r").Count;

或字符串上的循环:

var res = 0;
for (int i = 0; i < str.Length - 1; i++)
    if(s[i] == '\r' && s[i + 1] == '\r')
        res++;
var-res=0;
对于(int i=0;i
您可以使用正则表达式:

var res = Regex.Matches(s, "\r\r").Count;

或字符串上的循环:

var res = 0;
for (int i = 0; i < str.Length - 1; i++)
    if(s[i] == '\r' && s[i + 1] == '\r')
        res++;
var-res=0;
对于(int i=0;i
您可以为此编写一个简单的扩展方法:

public static int LineFeedCount(this string source)
{
     var chars = source.ToCharArray();

     bool found = false;
     int counter = 0;
     int count = 0;
     foreach(var ch in chars)
     {
         if (ch == '\r') found = true;
         else found = false;

         if (found) counter++;
         else counter = 0;

         if(counter != 0 && counter%2 == 0) count++;
     }
     return count;
}
然后使用它:

int count = inputString.LineFeedCount();

您可以为此编写一个简单的扩展方法:

public static int LineFeedCount(this string source)
{
     var chars = source.ToCharArray();

     bool found = false;
     int counter = 0;
     int count = 0;
     foreach(var ch in chars)
     {
         if (ch == '\r') found = true;
         else found = false;

         if (found) counter++;
         else counter = 0;

         if(counter != 0 && counter%2 == 0) count++;
     }
     return count;
}
然后使用它:

int count = inputString.LineFeedCount();
尝试以下方法:

public static int CountStringOccurrences(this string text, string pattern)
{
    int count = 0;
    int i = 0;
    while ((i = text.IndexOf(pattern, i)) != -1)
    {
        i += pattern.Length;
        count++;
    }
    return count;
}
用法:

int doubleLinefeedCount = sampleString.CountStringOccurrences("\r\r");
尝试以下方法:

public static int CountStringOccurrences(this string text, string pattern)
{
    int count = 0;
    int i = 0;
    while ((i = text.IndexOf(pattern, i)) != -1)
    {
        i += pattern.Length;
        count++;
    }
    return count;
}
用法:

int doubleLinefeedCount = sampleString.CountStringOccurrences("\r\r");

您可以使用使用查找字符拆分字符串的技巧\r\r: (这不是很有效,我们需要分配2个字符串数组,但我将其作为一种可能的解决方案发布,特别是如果您对分离的令牌感兴趣的话)


您可以使用使用查找字符拆分字符串的技巧\r\r: (这不是很有效,我们需要分配2个字符串数组,但我将其作为一种可能的解决方案发布,特别是如果您对分离的令牌感兴趣的话)

您不必使用.Where()和.Count()。.Count()方法本身有一个带谓词的重载。请参阅:您不必使用.Where()和.Count()。.Count()方法本身有一个带谓词的重载。见: