为什么C#的Replace方法需要在我的代码中替换"\n"和"\ r"?

Voi*_*ing -1 c# string replace razor

当使用Replace函数时,我注意到在尝试替换值"\ r"和/或"\n"时我没有想到的东西.

我在外部.cs文件中有以下方法(正在进行中):

public static string UrlEncode(string stringItem)
{
    stringItem = stringItem.Replace("%", "%25").
    Replace("\"", "%22").Replace("#", "%23").
    Replace("\\", "%5C").Replace("&", "%26").
    Replace("'", "%27").Replace("+", "%2B").
    Replace("\r", "").Replace("\n", " ");
    return stringItem;
}
Run Code Online (Sandbox Code Playgroud)

这产生了期望的结果(即,用单个空间替换任何新线).

所以,如果我传入一个带有单个"enter-key-press"的字符串,它会存储一个空格.

我不明白(因此是问题):为什么,如果我只使用"替换('\ r','')"或"替换('\n','')"它是否仍然存储新队.我能理解其中一个不能正常工作,但为什么我需要同时包括两者?如果'\ r'或'\n'替换方法都不能单独使用,为什么两者都有效?

我问这个问题,因为使用代码而不理解它(至少对我来说)是一个非常糟糕的习惯.此外,我对我打算使用的代码了解得越多,我就能越多地利用它的有用性,从未来的情况到情况.

-------------------------另一个特殊情况----------------------- -----

如果我只使用Replace("\ r",""),它提供空间(就像替换工作一样)但是然后没有删除新行.

或者,如果我只使用Replace("\n",""),它会保留新行,然后提供空格.

-------------------------一个最后的注意事项---------------------- ----------

如果重要,输出将进入cshtml页面上的textarea.

Ben*_*igt 5

这是因为你的输入数据包含"\r\n"(回车+换行)对,这是很常见的,而实际上需要通过HTTP标准(方法名"URL"显示HTTP可以在这里参与)数据.而当你查看数据,渲染器行为同样对所有三个行尾("\r\n","\r"孤独,"\n"孤独).这是由健壮性决定的行为.