public static string[] GetStringInBetween(string strBegin, string strEnd, string strSource, bool includeBegin, bool includeEnd)
{
string[] result = { "", "" };
int iIndexOfBegin = strSource.IndexOf(strBegin);
if (iIndexOfBegin != -1)
{
// include the Begin string if desired
if (includeBegin)
iIndexOfBegin -= strBegin.Length;
strSource = strSource.Substring(iIndexOfBegin + strBegin.Length);
int iEnd = strSource.IndexOf(strEnd);
if (iEnd != -1)
{
// include the End string if desired
if (includeEnd)
iEnd += strEnd.Length;
result[0] = strSource.Substring(0, iEnd);
// advance beyond this segment
if (iEnd + strEnd.Length < strSource.Length)
result[1] = strSource.Substring(iEnd + strEnd.Length);
}
}
return result;
}
使用:私はドットトレースを使用していますが、この方法は、私のCPUの33%を使用しドットトレースし、最適化する方法
string[] result = null;
result = HtmlHelper.GetStringInBetween(bits[0], bits[1], tagValuePair.Value, true, true);
。どのように私はそれを最適化できますか?私のアプリケーションがクラッシュしたり、メモリが足りなくなったりします。このメソッドが静的であることは賢明ですか?
ドットトレースが、この上のCPUの30%の使用率を示します。
System.String.IndexOf(String, Int32, Int32, StringComparison)
EDIT:
GetStringInBetween(string strBegin, string strEnd, string strSource, bool includeBegin, bool includeEnd)
strBegin = "<td class=\"m92_t_col2\">"
strEnd = "</td>"
strSource = "xxxxxxxx<td class=\"m92_t_col2\">Di. 31.01.12</td>xxxxxxxxxxxxxx
includeBegin = true
includeEnd = true
then i will get result
result[0] = "<td class=\"m92_t_col2\">Di. 31.01.12</td>"
これは、このメソッドは何をすべきかに役立ちます願っています。 strBeginとstrEndの間の文字列を見つけようとしてください。
の線に沿って
何かが、あなたは、このために正規表現を使用して考えがありますか? – Oded
@Oded私はしましたが、正規表現では非常に悪いので、indexofでコードを書くのは悪い考えでした... – senzacionale
dotraceは、 'System.String.IndexOf(String、Int32、Int32、あなたが単にGetStringInBetweenの呼び出しを減らすことができる場合 –