0

我需要在 c# 中为类添加一个接口,如果已经声明,则需要匹配:

public partial class Client

需要是

public partial class Client: IEntity

当事件已经存在时

public partial class Client: IEntity

必须留下

我已经将这个“公共部分类 (\w+)”变成了“公共部分类 $1: IEntity”

谢谢。

4

3 回答 3

0

看来你正在寻找这样的东西

(get-content test.cs -raw) -replace 'public partial class (\w+)(:.*)?$','public partial class $1: IEntity'
于 2013-09-11T09:30:02.560 回答
0

如果您只想处理特定类型的格式(即“public partial class 'classname'”)。这样的事情会做到这一点:

class Program
{
    static readonly Regex re = new Regex( @"^public partial class[^:]+$", RegexOptions.Compiled );
    static string Replacement( string stringToReplace )
    {
        return re.Replace( stringToReplace, match => match.Value + ": IEntity" );                
    }   
    static void Main()
    {
        string newString = Replacement( "public partial class Client" );
        Console.WriteLine( newString ); //output: "public partial class Client: IEntity"
        newString = Replacement( "public partial class Server" );
        Console.WriteLine( newString ); //output: "public partial class Server: IEntity"
        newString = Replacement( "public partial class Server: IEntity" );
        Console.WriteLine( newString ); //output: "public partial class Server: IEntity"
    }       
}

在哪里:

  • ^ 表示从头开始匹配。
  • $ 表示匹配到最后。
  • [^:]+ 表示任何不是 ':' 的字符
于 2013-09-11T00:52:15.930 回答
0

我想说直接的正则表达式是一种危险的方法。

如果你有:

public partial class Client: RichClient

最好不要添加额外的:IEntity

如果可能的话,您可以获取完整的行文本,然后编写一个函数来确定要做什么。

跨越多行会不会有问题?

于 2013-09-11T00:54:59.453 回答