我有一个CLR函数来替换字符串值。 但它运行了很长时间。如何改进此功能并使其运行更快?
public static SqlString ReplaceValues(String Value)
{
// Put your code here
char[] c = new char[] { '.' };
Value= Value.Trim();
Value = Value.Trim(c);
Value = Value.Replace("'", "").Replace(")", " ").Replace("(", " ").Replace("-", " ").Replace("_", " ");
Value = Regex.Replace(Value, @"[י", "+[י");
Value = Regex.Replace(Value, @"\s+", " ");
return new SqlString(Value.Trim());
}
编辑: 我改变了我的函数以使用value.Replace,它更好,但它仍然比预期运行更多的时间:
public static SqlString ReplaceStreetValues(String Value)
{
// Put your code here
Value = Value.Trim();
char[] c = new char[]{'.'};
Value = Value.Trim(c);
Value= Value.Replace("'", "").Replace(")", " ").Replace("(", " ").Replace("-", " ").Replace("_", " ").Replace("רח", "");
while (Value.IndexOf(" ")!=-1)
Value = Value.Replace(" ", " ");
while (Value.IndexOf("hh") !=-1)
Value = Value.Replace("hh", "h");
return new SqlString(Value.Trim());
}
感谢!!!
答案 0 :(得分:2)
尝试改为使用StringBuilder.Replace。
应该显着提高效果。
这有效,如string.Replace(..)
替代,而不是regex
次调用。
但显然瓶颈在于string
电话。
修改强>:
示例( pesudocode ):
char[] c = new char[]{'.', ' '};
Value = Value.Trim(c);
var sb = new StringBuilder(Value);
sb.Replace("'", "");
sb.Replace(")", " ");
sb.Replace("(", " ");
sb.Replace("-", " ");
sb.Replace("_", " ");
sb.Replace("רח", "");