string message = CommonFunctions.SanitiseInput(context.Request.QueryString["msg"]);
函数定义为:
// Sanitise input
public static string SanitiseInput(string inputText)
{
string cleanedString = inputText;
cleanedString.Replace("<","<"); // No code
cleanedString.Replace(">", ">");
cleanedString.Replace("&", "&"); // No query string breaks
return cleanedString;
}
给定输入 "<b>rg</b>"
这返回相同的,而不是 "<b>rg</b>"
最佳答案
Replace
C# 中的函数不修改字符串本身 - 它返回字符串的修改版本。
试试这个:
public static string SanitiseInput(string inputText)
{
string cleanedString = inputText;
cleanedString = cleanedString.Replace("<","<"); // No code
cleanedString = cleanedString.Replace(">", ">");
cleanedString = cleanedString.Replace("&", "&"); // No query string breaks
return cleanedString;
}
对于 "<b>rg</b>"
这会给你"&lt;b&gt;rg&lt;/b&gt;"
.修复不必要的转换为 "&"
, 将第三个替换移动到其他两个之前,这将为您提供您期望的结果。
关于c# 替换字符串函数不返回预期结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5076812/