我有一个消息传递系统,它是一个 .NET 2 ASMX Web 服务,非常基本的系统。我推送消息并希望在消息中包含换行符,以便在接收端对其进行格式化。例如,我想发送一个字符串,例如:“Hello\n\nMy Name Is...”,并让它有两个换行符。当接收器读取文本时,它实际上是在文本中输出 \n。我怎样才能让 \n 被解释为好像我是用 C# 编写的一样?或 \t 等。
谢谢你。
您应该使用Environment.NewLine编写消息以插入用于在系统上表示换行符的字符。
但是使用 Environment.NewLine 有一些问题。
例如,你的消息应该这样写
string msg = "Hello" + Environment.NewLine + Environment.NewLine + "My Name Is...";
从程序员的角度来看,使用起来有点麻烦。
然后,您可以为字符串类编写一个扩展方法,该方法接收您的消息并在占位符的位置插入 Environment.NewLine 字符。
此示例使用 | (管道)字符作为换行符 pos 的占位符。
public static string InsertLineBreaks(this string inMsg)
{
Strinbuilder sb = new StringBuilder(inMsg);
sb.Replace("|", Environment.NewLine);
return sb.ToString();
}
你可以用这种方式调用这个扩展
string msg = "Hello||My Name Is...".InsertLineBreaks();
Web 服务很可能发送回消息,回车符列为“%0D”。我在我的程序中所做的是使用:
str.Replace("%0D", Environment.NewLine);
这似乎对我有用。
我相信你也可以使用:
str.Replace("%0D", "\n");
您必须将 替换\n
为浏览器将其解释为新行的内容,即<br/>
. 我想您将它用作 HTML 字符串。
此外,您需要确保它不是 HtmlEncoded,即您<br/>
的未转换为<br/>
. 如果您使用 JSON 序列化,则不应发生这种情况。但如果您将其序列化为 XML 并且在客户端未正确解码,则会发生这种情况。
用这个:
string returnString = "Hello" + Environment.NewLine+ "My Name Is..";