如何使用自定义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("&amp;", "&").Replace("&apos;", "'").Replace("&quot;", "'"").Replace("&gt;", ">").Replace("&lt;", "<");
}
protected void Page_Load(object sender, EventArgs e)
{
    string TestData="TestData&amp;amp;amp;";
    Response.Write("using function====>>>>" + UnescapeXML(TestData));
    Response.Write("'n'n<BR>Not using function====>>>>" + TestData.Replace("&amp;", ""));
}

如何使用自定义c#函数替换多次出现的子字符串

假设您想要一个一次性(每个子字符串)解决方案,那么您的函数运行正常

您的testDate在amp; 之前缺少&个字符

更改为:

string TestData="TestData&amp;&amp;&amp;";

发件人:

string TestData="TestData&amp;amp;amp;";

什么是一次性(每个子字符串)解决方案

  1. 每个出现的唯一子字符串1都会发生更改
  2. 然后,每个出现的唯一子字符串2都会发生更改
  3. 然后,每个出现的唯一子字符串N都会发生变化

递归替代

递归解决方案包括以下内容:

  1. 在替换了一个子字符串之后,您再次调用函数

  2. 如果没有替换,则返回字符串

    public string ReplaceStuff(string MyStr) {   
      //Attempt to replace 1 substring
      if ( ReplacementOccurred ){
        return ReplaceStuff(ModifiedString);
      }else{
        return MyStr;
      } 
    }
    

使用递归可以得到什么

  • 好吧,给定一个输入字符串:&amp;amp;,它将首先更改为&amp;,然后下一级递归将它更改为&
  • 老实说,我不认为作者想要递归的解决方案,但我可以看到路人可能会怎么做

在这种情况下,HttpUtility类将是最好的选择。