使用RegEx查找参数和类型

时间:2015-06-20 14:16:28

标签: c# regex

我正在读出.cs文件,并希望每个方法存储至少两个参数的所有参数。 因此,paranthesses之间的每两个单词组合如下:

public static void MyFunction(string Param1, int Param2, List<string> Param3)

它应该将string Param1int Param2List<string> Param3提取到集合中。使用此参数时,始终至少有两个参数。

到目前为止,我得到了以下正则表达式:

([A-Za-z0-9<>]+\s[a-z0-9]+)

这会扫描整个方法标题,因此也包含public static作为匹配项。

有关如何解决此问题的任何建议吗?

感谢。

1 个答案:

答案 0 :(得分:1)

如果不使用正则表达式,这似乎更容易。你显然需要一些东西来识别函数头,但是一旦你知道你有一个函数头,就像这样打破参数:

using System;
using System.Collections.Generic;

public class Program
{
    public static void Main()
    {
        string functionHeader = "public static void MyFunction(string Param1, int Param2, List<string> Param3)";
        string parameters = functionHeader.Substring(functionHeader.IndexOf("(") + 1)
                                          .Replace(", ", ",")
                                          .Replace(")", String.Empty);

        List<string> parametersCollection = new List<string>(parameters.Split(','));
        parametersCollection.ForEach(pc => Console.WriteLine(pc));
    }
}

结果:

string Param1
int Param2
List<string> Param3