C# 是否从web服务获取以字符串形式返回的\n要尊重的C?

C# 是否从web服务获取以字符串形式返回的\n要尊重的C?,c#,.net-4.0,C#,.net 4.0,我有一个消息传递系统,它是一个.NET2ASMXWeb服务,非常基本的系统。我推送消息,希望消息中有换行符,以便在接收端格式化。例如,我想发送一个字符串,例如:“Hello\n\n我的名字是…”,并让它有两个换行符。当接收器读取文本时,它实际上是在输出文本中的\n。如何才能将\n解释为我是用C#编写的?或\t等 谢谢。您应该使用Environment.NewLine编写消息,以插入用于在系统上表示换行符的字符 但是,使用Environment.NewLine存在一些问题。 例如,您的消息应该以

我有一个消息传递系统,它是一个.NET2ASMXWeb服务,非常基本的系统。我推送消息,希望消息中有换行符,以便在接收端格式化。例如,我想发送一个字符串,例如:“Hello\n\n我的名字是…”,并让它有两个换行符。当接收器读取文本时,它实际上是在输出文本中的\n。如何才能将\n解释为我是用C#编写的?或\t等


谢谢。

您应该使用Environment.NewLine编写消息,以插入用于在系统上表示换行符的字符

但是,使用Environment.NewLine存在一些问题。
例如,您的消息应该以这种方式编写

string msg = "Hello" + Environment.NewLine + Environment.NewLine + "My Name Is...";
string msg = "Hello||My Name Is...".InsertLineBreaks();
从程序员的角度来看,使用起来有点麻烦

然后,您可以为string类编写一个扩展方法,该类接受您的消息并在占位符位置插入Environment.NewLine chars

本例使用|(管道)字符作为换行位置的占位符

public static string InsertLineBreaks(this string inMsg)
{
    Strinbuilder sb = new StringBuilder(inMsg);
    sb.Replace("|", Environment.NewLine);
    return sb.ToString();
}
你可以这样叫这个分机

string msg = "Hello" + Environment.NewLine + Environment.NewLine + "My Name Is...";
string msg = "Hello||My Name Is...".InsertLineBreaks();

web服务可能正在发回包含列为“%0D”的回车的消息。我在程序中所做的是使用:

str.Replace("%0D", Environment.NewLine);
这似乎对我有用

我相信您也可以使用:

str.Replace("%0D", "\n");

您必须用浏览器解释为新行的内容替换
\n
,即

。我想您将它用作HTML字符串

此外,您需要确保它不是HtmlEncoded,即您的

未转换为
br/
。如果使用JSON序列化,则不应发生这种情况。但如果您将其序列化为XML,并且在客户端没有正确解码,则会发生这种情况。

使用以下方法:

string returnString = "Hello" + Environment.NewLine+ "My Name Is..";

您尝试过发送吗?\r\n“接收端”是如何输出文本的?听起来您的字符串在途中的某个地方被转义了。您是否在调试器或somwhere中查看了原始文本?我怀疑您会在原始文本中看到C#或html转义。无论哪种方式,在客户端对其进行卸载都应该很简单。只有在接收环境相同的情况下,这才有效,服务无法保证这一点,对吗?@RJLohan给出了标签,我想情况就是这样。但是,等待OPit的澄清可以在存储的模板中提供帮助,可以像
MessageBody.replace(“{{newline}}”,Environment.newline)
;)