如何从多行TextBox中将字符串拆分为List ,将’\ n \ r’作为行结尾添加?

我的XAML文件中有一个文本框:

 

我得到一个我发送给CreateTable(string) ,后者又调用CreateTable(List)

 public override void CreateTable(string itemTypeDefinitionScript) { CreateTable(itemTypeDefinitionScript.Split(Environment.NewLine.ToCharArray()).ToList()); } public override void CreateTable(List itemTypeDefinitionArray) { Console.WriteLine("test: " + String.Join("|", itemTypeDefinitionArray.ToArray())); } 

问题是字符串显然在每一行的末尾都有’\ n \ r’,所以Split(’\ n’)只得到其中一个和Split(’\ r’)一样,并使用Environment.Newline.ToCharArray ()当我输入:

 one two three 

产生这个:

 one||two||three 

但我当然想要它产生这个:

 one|two|three 

什么是单行简单地将带有’ \n\r ‘结尾的字符串解析为List

像这样的东西可以工作:

 string input = "line 1\r\nline 2\r\n"; List list = new List( input.Split(new string[] { "\r\n" }, StringSplitOptions.RemoveEmptyEntries)); 

"\r\n"替换为适合您需要的分隔符字符串。

试试这个:

 List list = new List(Regex.Split(input, Environment.NewLine)); 

使用string.Split的重载, string.Split string[]作为分隔符:

 itemTypeDefinitionScript.Split(new [] { Environment.NewLine }, StringSplitOptions.RemoveEmptyEntries); 

次要补充:

 List list = new List( input.Split(new string[] { "\r\n", "\n" }, StringSplitOptions.None)); 

将在没有“\ r \ n”的情况下捕获这些情况(我从古代FORTRAN FIFO代码中获得了很多这样的例子……)并且不会丢弃任何行。