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.