0

我使用一组永久的大约 11 个正则表达式来解析大约 80k - 200k 个字符的长字符串。到目前为止,我只new Regex(@"blah")在每个必须使用Match(String, Int32)Replace(String, String)Replace(String, MatchEvaluator)的地方使用。

但是使用这些实例方法并没有利用 .NET 的正则表达式缓存。所以我想重构我的代码以使用静态方法。问题是我找不到Match(String, Int32)的静态等效项。

我考虑过适当地使用String.Substring(Int32)但据我所知它会为我分配新的字符串。

我还有其他选择吗?

4

1 回答 1

1

您可以创建 11 个正则表达式的静态实例并在任何地方使用它。

static Regex r= new Regex(...);

或者您可以创建一个包含正则表达式的静态单例对象。

public MyStaticObject{
    private  Regex r1;
    private  Regex r2;

    public Regex R1{
        get{ return r1;}
    }
    //...
    private MyStaticObject instance;

    private MyStaticObject(){
        r1=new Regex(...);
    }

    public MyStaticObject GetInstance(){
        if(instance==null){
            instance= new MyStaticObject();
        }
        return instance;
    }
}
于 2012-08-30T10:25:51.123 回答