recortar - separar un string c#




Dividir cadena, convertir ToList<int>() en una línea (6)

Tengo una cuerda que tiene números

string sNumbers = "1,2,3,4,5";

Puedo dividirlo y luego convertirlo a List<int>

sNumbers.Split( new[] { ',' } ).ToList<int>();

¿Cómo puedo convertir una matriz de cadenas a una lista de enteros? Para que yo pueda convertir la string[] a IEnumerable


El camino de Joze también necesita LINQ, ToList() está en el espacio de nombres System.Linq .

Puede convertir Array en List sin Linq pasando la matriz al constructor de Lista:

List<int> numbers = new List<int>( Array.ConvertAll(sNumbers.Split(','), int.Parse) );

En Unity3d, int.Parse no funciona bien. Entonces uso como abajo.

List<int> intList = new List<int>( Array.ConvertAll(sNumbers.Split(','),
 new Converter<string, int>((s)=>{return Convert.ToInt32(s);}) ) );

Espero esta ayuda para los usuarios de Unity3d.


Puede usar las nuevas características del lenguaje C # 6.0:

  • reemplace delegate (s) => { return Convert.ToInt32(s); } (s) => { return Convert.ToInt32(s); } con el grupo de métodos correspondiente Convert.ToInt32
  • reemplazar llamada de constructor redundante: new Converter<string, int>(Convert.ToInt32) con: Convert.ToInt32

El resultado será:

var intList = new List<int>(Array.ConvertAll(sNumbers.Split(','), Convert.ToInt32));

Puedes usar esto:

List<Int32> sNumberslst = sNumbers.Split(',').ConvertIntoIntList();

También puede hacerlo de esta manera sin la necesidad de Linq:

List<int> numbers = new List<int>( Array.ConvertAll(sNumbers.Split(','), int.Parse) );

// Uses Linq
var numbers = Array.ConvertAll(sNumbers.Split(','), int.Parse).ToList();

también puedes usar este método de extensión

public static List<int> SplitToIntList(this string list, char separator = ',')
{
    return list.Split(separator).Select(Int32.Parse).ToList();
}

uso:

var numberListString = "1, 2, 3, 4";
List<int> numberList = numberListString.SplitToIntList(',');




split