关于c#:如何计算输入字符串?

how to count Enter in a string?

本问题已经有最佳答案,请猛点这里访问。

Possible Duplicate:
How would you count occurences of a string within a string (C#)?

我有一个字符串,它有多个子字符串,并且在它们之间输入(按Enter键的特殊字符)。

你能指导我如何编写一个计算单词之间输入键的正则表达式吗?

谢谢


根据所使用的换行符,您可能需要更改为仅
或仅

1
2
3
var numberLineBreaks = Regex.Matches(input, @"

"
).Count;


你不需要正则表达式,你只是在计算字符串。具体地说,您只是在计算Environment.Newlines。有很多方法可以做到这一点;在这个答案中描述了几个方法。这里有一个看起来效率很低,但却表现得出奇的好:

1
int count1 = source.Length - source.Replace(Environment.Newline,"").Length;


它必须是正则表达式吗?可能有更简单的方法…例如,可以使用string[] array = String.Split('
');
创建子字符串数组,然后使用array.Length;获取计数。


您可以使用此代码,

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
using System;
using System.Text.RegularExpressions;

class Program
    {
        static void Main()
        {
         long a = CountLinesInString("This is an

awesome website."
);
         Console.WriteLine(a);

         long b = CountLinesInStringSlow("This is an awesome

website.

Yeah."
);
         Console.WriteLine(b);
         }

         static long CountLinesInString(string s)
         {
          long count = 1;
          int start = 0;
          while ((start = s.IndexOf('
'
, start)) != -1)
          {
              count++;
               start++;
          }
          return count;
         }

         static long CountLinesInStringSlow(string s)
         {
          Regex r = new Regex("
"
, RegexOptions.Multiline);
          MatchCollection mc = r.Matches(s);
          return mc.Count + 1;
         }
 }


你可以简单地计算新行数:

1
2
3
4
5
int start = -1;
int count = 0;
while ((start = text.IndexOf(Environment.NewLine, start + 1)) != -1)
    count++;
return count;