c# 替换字符串函数不返回预期结果

标签 c# string

string message = CommonFunctions.SanitiseInput(context.Request.QueryString["msg"]);

函数定义为:

// Sanitise input
public static string SanitiseInput(string inputText)
{
    string cleanedString = inputText;

    cleanedString.Replace("<","&lt;");      // No code
    cleanedString.Replace(">", "&gt;");
    cleanedString.Replace("&", "&amp;");    // No query string breaks

    return cleanedString;
}

给定输入 "<b>rg</b>"这返回相同的,而不是 "&lt;b&gt;rg&lt;/b&gt;"

最佳答案

Replace C# 中的函数不修改字符串本身 - 它返回字符串的修改版本。

试试这个:

public static string SanitiseInput(string inputText)
{
    string cleanedString = inputText;

    cleanedString = cleanedString.Replace("<","&lt;");      // No code
    cleanedString = cleanedString.Replace(">", "&gt;");
    cleanedString = cleanedString.Replace("&", "&amp;");    // No query string breaks

    return cleanedString;
}

对于 "<b>rg</b>"这会给你"&amp;lt;b&amp;gt;rg&amp;lt;/b&amp;gt;" .修复不必要的转换为 "&amp;" , 将第三个替换移动到其他两个之前,这将为您提供您期望的结果。

关于c# 替换字符串函数不返回预期结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5076812/

相关文章:

Java DES 加密、C# DES 解密

java - 如何在另一个 Java 类中存储带有变量的字符串?

c - 使用字符串乘法非常大的数字

javascript - 如何从 javascript 中的 API 字符串确定多个不同大小的子字符串

string - 我们如何计算 MATLAB 元胞数组中特定字符串的起始和结束索引?

c# - 如何从 url 中删除 Controller 和操作,只获取 MVC 中的 url

c# - PdfSharp:动态生成文档

C# Rijndael 密码异常 "Length of the data to encrypt is invalid."

c# - SQL DataReader 网络使用限制

Javascript: trim 数组中字符串的长度