如何从多行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代码中获得了很多这样的例子……)并且不会丢弃任何行。