我使用一组约11个正则表达式来永久解析大约80k到200k个字符的长字符串。到目前为止,我只使用new Regex(@"blah")
在我必须使用Match(String, Int32),Replace(String, String)和Replace(String, MatchEvaluator)的每个地方。
但是使用这些实例方法并没有利用.NET的正则表达式缓存。所以我想重构我的代码来改为使用静态方法。问题是我找不到Match(String, Int32)的静态等价物。
我考虑过只使用String.Substring(Int32),但据我所知,它会为我分配新的字符串。
我还有其他选择吗?
答案 0 :(得分: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;
}
}