0

解析具有特定属性的方法名称时需要帮助。

规则:
1) 应列出所有具有最低“[Test”属性的方法。
2) methodName 将在名称前有一个空格字符,并在名称末尾有“(”符号。很可能是 Test 属性的下一行或第二行。

样品 1:

[Test]
public Type methodName(parametes ...)

样本 2:

//[Test]
public Type methodName(parametes ...)

样品 3:

[Test (, some names etc)]
public Type methodName(parametes ...)

样品 4:

[Test (, some names etc)]
[Other optional attributes]
public Type methodName(parametes ...)

预期结果:方法名

我尝试了几个建议,例如Regex Match all characters between two strings。但是,并不成功。

4

1 回答 1

1

对所有正则表达式的东西并不那么花哨,但它适用于示例案例......

var lines = File.ReadAllLines(@"c:\temp\samples.txt");

var matched = false;
foreach (var line in lines)
{
    if(matched)
    {
        var match = Regex.Match(line, @"public");
        if(match.Length > 0)
        {
            matched = false;
            match = Regex.Match(line, @"[a-zA-Z_]+( )?(?=\()"); 
            Console.WriteLine (match.Value);
        }
    }
    else
    {
        matched = Regex.IsMatch(line, @"\[.*Test.*\]");
    }
}

或者您可以使用 unit runner 运行所有文件,它会列出所有测试的名称......

于 2013-04-16T12:33:23.797 回答