如何使用自定义c#函数替换多次出现的子字符串
本文关键字:字符串 自定义 何使用 函数 替换 | 更新日期: 2023-09-27 17:59:02
我写了下面的代码来替换字符串,但代码似乎有问题。它无法多次更换。它只能替换第一次出现的内容。它假定替换所有出现的内容。
//不要使用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("&", ""));
}
假设您想要一个一次性(每个子字符串)解决方案,那么您的函数运行正常
您的testDate在amp;
之前缺少&
个字符
更改为:
string TestData="TestData&&&";
发件人:
string TestData="TestData&amp;amp;";
什么是一次性(每个子字符串)解决方案
- 每个出现的唯一子字符串1都会发生更改
- 然后,每个出现的唯一子字符串2都会发生更改
- 然后,每个出现的唯一子字符串N都会发生变化
递归替代
递归解决方案包括以下内容:
在替换了一个子字符串之后,您再次调用函数
如果没有替换,则返回字符串
public string ReplaceStuff(string MyStr) { //Attempt to replace 1 substring if ( ReplacementOccurred ){ return ReplaceStuff(ModifiedString); }else{ return MyStr; } }
使用递归可以得到什么
- 好吧,给定一个输入字符串:
&amp;
,它将首先更改为&
,然后下一级递归将它更改为&
- 老实说,我不认为作者想要递归的解决方案,但我可以看到路人可能会怎么做
在这种情况下,HttpUtility类将是最好的选择。