从字符串数组创建多行字符串对象-C#

时间:2018-10-15 18:49:30

标签: c# multilinestring

我正在尝试从字符串数组创建多行字符串 像

@"A minErr message has two parts: 
  the message itself and the url that contains the encoded message.
  The message's parameters can contain other error messages which also include error urls.";

我有这些行的字符串数组

string [] miltilines={"A minErr message has two parts:","the message itself and the url that contains the encoded message.","The message's parameters can contain other error messages which also include error urls."}

我尝试了多种方法来获取多行字符串对象,但在字符串对象中以\ r \ n结尾

1:String.Join(Environment.NewLine, miltilines)

2:

string multiline = @" ";
foreach (var item in miltilines)
            {
                multiline += @"" + item.Trim() + " ";
            }

3:

StringBuilder stringBuilder = new StringBuilder();
 foreach (var item in miltilines)
            {
 stringBuilder.AppendLine(item );
}

有什么方法可以从字符串数组中获取多行字符串对象

2 个答案:

答案 0 :(得分:1)

如果您通过将原始代码分配给变量来对其进行测试:

var value = @"A minErr message has two parts: 
              the message itself and the url that contains the encoded message.
              The message's parameters can contain other error messages which also include error 
              urls.";

然后转到调试器窗口并检查value变量,您将发现:

"A minErr message has two parts: \r\n  the message itself and the url that contains the encoded message.\r\n  The message's parameters can contain other error messages which also include error urls."

\r\nescape sequences

  

转义序列通常用于指定动作,例如   终端机和打印机上的回车和制表符移动。他们是   也用于提供非印刷字符的文字表示   和通常具有特殊含义的字符,例如double   引号(“)。

方法1应该可以正常工作。 Environment.NewLine代表非打印字符:

  

对于非Unix平台,包含“ \ r \ n”的字符串或字符串   在Unix平台上包含“ \ n”。

因此它们将不会打印为\r\n,而将分别解释为回车和换行操作。

答案 1 :(得分:0)

对于字符串,实际数据与如何向用户表示之间可能会有巨大的差距。包括您在内的调试器用户。如果您不知道如何解释字符串,则无法获得字母,甚至无法弄清楚当当事件的结尾: https://www.joelonsoftware.com/2003/10/08/the-absolute-minimum-every-software-developer-absolutely-positively-must-know-about-unicode-and-character-sets-no-excuses/

调试器和Windows /程序对如何解释给定的字符串有非常不同的想法并不罕见。你的例子: “ minErr消息包含两个部分:/ r / n消息本身和包含编码消息的URL。/r/n消息的参数可以包含其他错误消息,其中还包括错误URL。”只是对字符串期望值的一种可能解释。

调试器使用工具提示。这些工具提示不支持多行。这可能有技术原因(工具提示不支持换行符/初次编写时不支持)或用例原因(这会使Tolltips难以使用包含很多换行符的字符串来阅读)。

/ r / n是Windows上的“回车”和“换行”字符。调试器缺乏在多行(例如多行文本框)上实际显示内容的能力,因此,下一个最好的事情是:调试器将换行符转义符显示为字符串的一部分。任何实际上可以在多行中显示文本的代码都可以正确地将这些字符解释为它们应代表的字符。