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

SMT*_*Y01 1 c# string

我编写了下面的代码来替换字符串,但似乎代码有问题.它无法多次替换.它只能替换第一次出现.它假设要替换所有出现的事件.

//不要使用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;", ""));

}
Run Code Online (Sandbox Code Playgroud)

Bri*_*ter 5

假设您需要一次通过(每子串)解决方案,您的功能正常运行.

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

改成:

string TestData="TestData&amp;&amp;&amp;";
Run Code Online (Sandbox Code Playgroud)

从:

string TestData="TestData&amp;amp;amp;";
Run Code Online (Sandbox Code Playgroud)

什么是一次通过(每子串)解决方案?

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

递归替代

递归解决方案将涉及以下内容:

  1. 在单个子串替换后,再次调用该函数

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

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

你对Recursion有什么看法?

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