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);