2012-06-03 15 views

Respuesta

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

Vals le dará el título

+3

Esa es la forma más obvia ... Pero, en realidad, ¿quieres realizar una división en toda la cadena, solo para obtener la primera parte? Imagínese si la secuencia fue un poco larga y si la operación se realizó muchas veces durante la vida útil del programa, y ​​tal vez incluso en un ciclo para todos los registros. – SimpleVar

17

En realidad, hay una mejor manera de hacerlo que dividida:

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

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

Y como los métodos de extensión:

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); 
} 

Uso:

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

Se devolverá una cadena o un char []? – ivowiblo

+0

@ivowiblo Buen punto. Lo arreglé. Editar: en realidad lo eliminó, porque los métodos de extensión son mucho mejores y mejores. – SimpleVar

+0

¿No escribiste una forma sencilla de usar división en un comentario? –

5

Puede hacerlo:

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

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

También usted puede hacerlo de esta manera:

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

El segundo error si la cadena no contiene "," - aunque la división devolverá una matriz de tamaño 1, que contiene el conjunto cuerda. – SimpleVar

+0

derecho, corrigiéndolo ... – ivowiblo

+0

Y de nuevo, ¿por qué 'string.Empty'?El codificador esperará que se devuelva toda la cadena, al igual que toda la cadena aparecerá en 'splitResult [0]' (también una razón para cambiar 'FirstOrDefault()' a simplemente '[0]', porque la matriz siempre tendrá al menos un elemento). – SimpleVar

Cuestiones relacionadas