Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/magento/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 3.0 将字符串附加到已填充的字符串生成器(在开始时使用INSERT)然后将其转换为字符串数组(C#3.0)时出现问题_C# 3.0 - Fatal编程技术网

C# 3.0 将字符串附加到已填充的字符串生成器(在开始时使用INSERT)然后将其转换为字符串数组(C#3.0)时出现问题

C# 3.0 将字符串附加到已填充的字符串生成器(在开始时使用INSERT)然后将其转换为字符串数组(C#3.0)时出现问题,c#-3.0,C# 3.0,我有一个字符串生成器,比如 StringBuilder sb = new StringBuilder("Value1"); sb.AppendLine("Value2"); 现在我有一个字符串要说 string str = "value 0"; 是的 sb.Insert(0,str); 然后 string[] strArr = sb.ToString().Trim().Replace("\r", string.Empty).Split('\n'); 我得到的结果是(数组大小为2,我应该得

我有一个字符串生成器,比如

StringBuilder sb = new StringBuilder("Value1");
sb.AppendLine("Value2");
现在我有一个字符串要说

string str = "value 0";
是的

sb.Insert(0,str);
然后

string[] strArr = sb.ToString().Trim().Replace("\r", string.Empty).Split('\n');
我得到的结果是(数组大小为2,我应该得到3)

但是期望的输出是

[0] Value 0
[1] Value1
[2] Value2
我错在哪里

我正在使用C#3.0

请帮忙。。这很紧急


谢谢

您正在插入
值0
,这将导致第一行为
Value0Value1

Insert将仅在指定位置插入字符串。它的工作原理与AppendLine相同。由于没有回车符,您的拆分将无法按预期工作。

该方法不会自动插入回车符,因此您必须自己添加一个:

string str = "value 0" + Environment.NewLine;

实际上,您将得到一个大小为1的数组。在创建字符串生成器时,将“Value1”放入其中,然后添加“Value2”和一个换行符,使字符串成为“Value1Value2\r\n”(本例假设CR+LF换行符)。然后在开头插入“Value 0”,使字符串“Value 0Value1Value2\r\n”。修剪字符串将删除结尾处的换行符,对字符串中不存在的字符进行拆分将得到一个仅包含一项的数组:

[0] Value 0Value1Value2
Insert
方法不像
AppendLine
那样添加换行符,因此您必须手动添加换行符:

StringBuilder sb = new StringBuilder();
sb.AppendLine("Value1");
sb.AppendLine("Value2");

string str = "value 0";
sb.Insert(0, str + Environment.NewLine);
现在可以修剪和拆分字符串:

string[] strArr =
  sb.ToString()
  .Trim()
  .Split(new string[]{ Environment.NewLine }, StringSplitOptions.None);

您应该知道,如果您在开头插入而不是使用Append方法,那么使用StringBuilder而不是字符串连接的性能优势就会丧失。
string[] strArr =
  sb.ToString()
  .Trim()
  .Split(new string[]{ Environment.NewLine }, StringSplitOptions.None);