2010-08-02 10 views

risposta

29

è possibile memorizzare la scissione in una clausola let

var parameters = 
    from line in parameterTextBox.Lines 
    let split = line.Split(' ') 
    select new {name = split.First(), value = split.Skip(1)}; 
+0

+1 Prima risposta corretta –

6

Certo.

var parameters = from line in parameterTextBox.Lines 
       let words = line.Split(' ') 
       select new { name = words.First(), words.skip(1) }; 
0

Si potrebbe provare questo:

private Dictionary<string, string> getParameters(string[] lines) 
{ 
    Dictionary<string, string> results = new Dictionary<string, string>(); 
    foreach (string line in lines) 
    { 
     string pName = line.Substring(0, line.IndexOf(' ')); 
     string pVal = line.Substring(line.IndexOf(' ') + 1); 
     results.Add(pName, pVal); 
    } 
    return results; 
} 
4
string Str= "one all of the rest"; 
Match m = Regex.match(Str,"(\w*) (\w.*)"); 
string wordone = m.Groups[1]; 
string wordtwo = m.Groups[2]; 
+0

Questo sarebbe un approccio migliore, dal momento che non solo uno spazio bianco può separare una parola. –

+0

Preferirei non usare Regex. La via LINQ è più chiara. – CookieOfFortune

+1

Direi che linq è un modo diverso di fare programmazione uso spesso linq ma non penso mai che sia pulito. Anche se abbastanza efficace. Uso la regex da anni ed è quasi sempre la mia scelta per l'analisi del testo – rerun

Problemi correlati