Come dividere una stringa in una List da un TextBox multilinea che aggiunge ‘\ n \ r’ come fine linea?

Ho una casella di testo nel mio file XAML:

 

con cui ottengo una stringa che invio a CreateTable(string) che a sua volta chiama 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())); } 

Il problema è che la stringa ovviamente ha ‘\ n \ r’ alla fine di ogni riga, quindi Split (‘\ n’) ne ottiene solo uno come Split (‘\ r’), e usa Environment.Newline.ToCharArray () quando scrivo questo:

 one two three 

produce questo:

 one||two||three 

ma ovviamente voglio produrlo:

 one|two|three 

Cos’è un one-liner per analizzare semplicemente una stringa con terminazioni ‘ \n\r ‘ in una List ?

Qualcosa del genere potrebbe funzionare:

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

Sostituisci "\r\n" con una stringa separatrice adatta alle tue esigenze.

prova questo:

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

Usa l’overload di string.Split che prende una string[] come separatori:

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

Aggiunta minore:

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

catturerà i casi senza il “\ r” (ho molti esempi simili dai codici FIFO FORTRAN antichi …) e non gettare alcun verso.