I managed to make a method for doing what I want. So here I am sharing it if someone wants to edit, advice or etc. Please advise me.
public static string ReplaceIfStatement(string script, CResultData resultData)
{
string workingScript = script;
string manipulatedScript = workingScript.Clone() as string;
workingScript = CStringFunctions.ReplaceAll(workingScript, "\r", string.Empty);
workingScript = CStringFunctions.ReplaceAll(workingScript, "\t", string.Empty);
string ifStartFieldName = "<if hold=" /> string ifEndFieldName = "><endif>";
workingScript = CStringFunctions.ReplaceAll(workingScript, "<if\n",>
bool repeat = true;
while (repeat)
{
int ifStartIndexOpenTag = workingScript.IndexOf(ifStartFieldName);
int ifEndIndexOpenTag = workingScript.IndexOf(ifEndFieldName);
if (ifStartIndexOpenTag != -1
|| ifEndIndexOpenTag != -1)
{
int ifStartIndexCloseTag = CStringFunctions.IndexOfString(
workingScript,
">",
ifStartIndexOpenTag + ifStartFieldName.Length + 1);
int ifEndIndexCloseTag = CStringFunctions.IndexOfString(
workingScript,
">",
ifEndIndexOpenTag + ifStartFieldName.Length + 1);
if (ifStartIndexCloseTag != -1)
{
string ifStatement = CStringFunctions.SubstrString(
workingScript,
ifStartIndexOpenTag + ifStartFieldName.Length,
ifStartIndexCloseTag - (ifStartIndexOpenTag + ifStartFieldName.Length));
ifStatement = CStringFunctions.ReplaceAll(ifStatement, " ", string.Empty);
string rightSideIfStatement = CStringFunctions.SubstrString(
ifStatement,
1,
CStringFunctions.IndexOfString(ifStatement, "=") - 1);
string leftSideIfStatement = CStringFunctions.SubstrString(
ifStatement,
CStringFunctions.IndexOfString(ifStatement, "=") + 1,
CStringFunctions.IndexOfString(ifStatement, ")")
- CStringFunctions.IndexOfString(ifStatement, "=") - 1);
CResultData ifResultData = resultData.Clone();
foreach (PropertyInfo property in ifResultData.GetType().GetProperties())
{
if (rightSideIfStatement == property.Name.ToUpper()
&& leftSideIfStatement == (string)property.GetValue(ifResultData, null))
{
manipulatedScript = CStringFunctions.ReplaceStringAtPosition(
workingScript,
ifStartIndexOpenTag,
ifStartIndexCloseTag + 1,
string.Empty);
ifEndIndexOpenTag = CStringFunctions.IndexOfString(manipulatedScript, ifEndFieldName);
ifEndIndexCloseTag = CStringFunctions.IndexOfString(
manipulatedScript,
">",
ifEndIndexOpenTag + ifStartFieldName.Length + 1);
manipulatedScript = CStringFunctions.ReplaceStringAtPosition(
manipulatedScript,
ifEndIndexOpenTag,
ifEndIndexCloseTag + 1,
string.Empty);
workingScript = manipulatedScript;
return workingScript;
}
}
if (manipulatedScript != null && manipulatedScript.Length == workingScript.Length)
{
manipulatedScript = CStringFunctions.ReplaceStringAtPosition(
workingScript,
ifStartIndexOpenTag,
ifEndIndexCloseTag + 1,
string.Empty);
workingScript = manipulatedScript;
return workingScript;
}
}
else
{
repeat = false;
}
}
else
{
repeat = false;
}
}
workingScript = manipulatedScript;
return workingScript;
}</endif></if></endif></if></if></if></endif></if>