我编写了下面的代码来替换字符串,但似乎代码有问题。它无法多次替换。它只能替换第一次出现。它假设要替换所有出现的事件。
//不要使用System.Security.SecurityElement.Escape。我正在为多个.NET版本编写此代码。
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("&", ""));
}
答案 0 :(得分:5)
假设您需要一次通过(每子字符串)解决方案,您的功能正常运行。
您的testDate在&
amp;
个字符
更改为:
string TestData="TestData&&&";
自:
string TestData="TestData&amp;amp;";
什么是一次通过(每子字符串)解决方案?
递归替代
递归解决方案将涉及以下内容:
在替换单个子字符串后,再次调用该函数
如果没有发生替换,请返回字符串
public string ReplaceStuff(string MyStr) {
//Attempt to replace 1 substring
if ( ReplacementOccurred ){
return ReplaceStuff(ModifiedString);
}else{
return MyStr;
}
}
你对Recursion有什么看法?
&amp;
,它首先会更改为&
,然后下一级递归会将其更改为&
。答案 1 :(得分:1)
在这种情况下,看起来HttpUtility类将是最佳选择。