0

約 11 個の正規表現の永続的なセットを使用して、約 80k ~ 200k 文字の長さの文字列を解析します。これまでのところ、 Match(String, Int32)Replace(String, String)Replace(String, MatchEvaluator)new Regex(@"blah")を使用する必要があるすべての場所で使用しました。

ただし、これらのインスタンス メソッドを使用しても、.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 に答える