I wrote the code below to replace strings but it seemed like there is something wrong with the code. It couldn’t replace multiple times. It only can replace the first occurrence. It suppose to replace all occurrences.
//Do not use System.Security.SecurityElement.Escape. I am writing this code for multiple .NET versions.
public string UnescapeXML(string s)
{
if (string.IsNullOrEmpty(s)) return s;
return s.Replace("&", "&").Replace("'", "'").Replace(""", "\"").Replace(">", ">").Replace("<", "<");
}
protected void Page_Load(object sender, EventArgs e)
{
string TestData="TestData&amp;amp;";
Response.Write("using function====>>>>" + UnescapeXML(TestData));
Response.Write("\n\n<BR>Not using function====>>>>" + TestData.Replace("&", ""));
}
Your function is operating correctly, assuming you want a one-pass (per substring) solution.
Your testDate is missing
&characters beforeamp;Change to:
From:
What is a one-pass (per substring) solution?
Recursive Alternative
A recursive solution would involve the following:
After one-single substring replacement, you call the function again
If no replacements occured, return the string
What do you get with Recursion?
&amp;, it would first be changed to&, then the next level of recursion would change it to&.