2012-06-03 10 views

risposta

42
string valueStr = "title, genre, director, actor"; 
var vals = valueStr.Split(',')[0]; 

vals vi darà il titolo

+3

Questo è un po 'il modo ovvio ... Ma davvero, vuoi eseguire una divisione su tutta la stringa, solo per ottenere la prima parte? Immagina se la stringa fosse abbastanza lunga e se l'operazione fosse eseguita molte volte durante la vita del programma e forse anche in un ciclo per tutti i record. – SimpleVar

17

In realtà, c'è un modo migliore per farlo che diviso:

public string GetFirstFromSplit(string input, char delimiter) 
{ 
    var i = input.IndexOf(delimiter); 

    return i == -1 ? input : input.Substring(0, i); 
} 

E come metodi di estensione:

public static string FirstFromSplit(this string source, char delimiter) 
{ 
    var i = source.IndexOf(delimiter); 

    return i == -1 ? source : source.Substring(0, i); 
} 

public static string FirstFromSplit(this string source, string delimiter) 
{ 
    var i = source.IndexOf(delimiter); 

    return i == -1 ? source : source.Substring(0, i); 
} 

Usage:

string result = "hi, hello, sup".FirstFromSplit(','); 
Console.WriteLine(result); // "hi" 
+0

Si restituirà una stringa o un char []? – ivowiblo

+0

@ivowiblo Buon punto. L'ho riparato. Modifica: effettivamente rimosso, perché i metodi di estensione sono solo molto più belli e migliori. – SimpleVar

+0

Non hai scritto un modo semplice per usare split in un commento? –

5

Si può fare:

var str = "Doctor Who,Fantasy,Steven Moffat,David Tennant"; 

var title = str.Split(',').First(); 

Inoltre si può fare in questo modo:

var index = str.IndexOf(","); 
var title = index < 0 ? str : str.Substring(0, index); 
+0

Il secondo fallirà se la stringa non contiene "," - sebbene la divisione restituirà una matrice di dimensione 1, contenente l'intero stringa. – SimpleVar

+0

right, fissandolo ... – ivowiblo

+0

E ancora, perché 'string.Empty'?Il coder si aspetta che venga restituita l'intera stringa, proprio come l'intera stringa apparirà in 'splitResult [0]' (anche un motivo per cambiare 'FirstOrDefault()' in semplicemente '[0]', perché l'array avrà sempre almeno un elemento). – SimpleVar

Problemi correlati