如何解决如何使用自定义c#函数替换多次出现的子字符串?
| 我在下面编写了替换字符串的代码,但似乎代码有问题。它不能多次替换。它只能代替第一次出现。它假定替换所有出现的事件。 //不要使用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;\";
什么是单遍(每个子字符串)解决方案?
每个唯一的substring1出现都被更改。
然后,更改每个唯一的substring2出现。
...
然后,改变每个唯一的子串N的出现。
递归替代
递归解决方案将涉及以下内容:
替换单个子字符串后,您再次调用该函数
如果没有替换,返回字符串
public string ReplaceStuff(string MyStr) {
//Attempt to replace 1 substring
if ( ReplacementOccurred ){
return ReplaceStuff(ModifiedString);
}else{
return MyStr;
}
}
递归有什么用?
好,给定一个输入字符串:&amp;
,它将首先更改为&
,然后进行下一级别的递归将其更改为&
。
老实说,我不认为作者需要递归解决方案,但我可以看到路人可能会如何。
, 看起来HttpUtility类将是这种情况下的最佳选择。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。