计算字符串中\ r \ r \ n的数量

时间:2014-04-19 21:01:39

标签: 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。

5 个答案:

答案 0 :(得分:6)

您可以使用正则表达式:

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

答案 1 :(得分:1)

试试这个方法:

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

答案 2 :(得分:0)

您可以使用LINQ选择\r\r开始的所有位置并计算它们:

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

请注意,"\r\r\r"将在上面的代码中返回2 ...

答案 3 :(得分:0)

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

"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".Split(new string[] {"\r\r"}, StringSplitOptions.None).Length - 1)

答案 4 :(得分:-1)

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

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