variable usar una separar quitar por palabras manejo invertida como comas caracteres cadenas cadena asigna c# string

c# - usar - ¿La forma más fácil de analizar una cadena delimitada por comas a algún tipo de objeto al que puedo acceder para acceder a los valores individuales?



split separar por comas (6)

¿Cuál es la forma más fácil de analizar una cadena de valores delimitada por comas en algún tipo de objeto que pueda recorrer en bucle para poder acceder a los valores individuales fácilmente?

cadena de ejemplo: "0, 10, 20, 30, 100, 200"

Soy un poco nuevo en C #, así que perdóname por hacer una pregunta simple como esta. Gracias.


var stringToSplit = "0, 10, 20, 30, 100, 200";

// To parse your string var elements = test.Split(new[] { '','' }, System.StringSplitOptions.RemoveEmptyEntries);

// To Loop through foreach (string items in elements) { // enjoy }


A veces las columnas tendrán comas dentro de sí mismas, tales como:

"Algún elemento", "Otro elemento", "Además, Un elemento más"

En estos casos, dividir en "," romperá algunas columnas. Tal vez sea una forma más fácil, pero acabo de crear mi propio método (como bonificación, maneja los espacios después de las comas y devuelve un IList):

private IList<string> GetColumns(string columns) { IList<string> list = new List<string>(); if (!string.IsNullOrWhiteSpace(columns)) { if (columns[0] != ''/"'') { // treat as just one item list.Add(columns); } else { bool gettingItemName = true; bool justChanged = false; string itemName = string.Empty; for (int index = 1; index < columns.Length; index++) { justChanged = false; if (subIndustries[index] == ''/"'') { gettingItemName = !gettingItemName; justChanged = true; } if ((gettingItemName == false) && (justChanged == true)) { list.Add(itemName); itemName = string.Empty; justChanged = false; } if ((gettingItemName == true) && (justChanged == false)) { itemName += columns[index]; } } } } return list; }



El patrón coincide con todos los caracteres que no son dígitos. Esto lo restringirá a enteros no negativos, pero para su ejemplo será más que suficiente.

string input = "0, 10, 20, 30, 100, 200"; Regex.Split(input, @"/D+");


Hay problemas con esto, pero en última instancia, la forma más sencilla será utilizar

string s = [yourlongstring]; string[] values = s.Split('','');

Si el número de comas y entradas no es importante, y desea deshacerse de los valores ''vacíos'', puede usar

string[] values = s.Split(",".ToCharArray(), StringSplitOptions.RemoveEmptyEntries);

Una cosa, sin embargo, esto mantendrá cualquier espacio en blanco antes y después de sus cadenas. Podrías usar un poco de magia Linq para resolver eso:

string[] values = s.Split('','').Select(sValue => sValue.Trim()).ToArray();

Eso es si está utilizando .Net 3.5 y tiene la declaración de System.Linq en la parte superior de su archivo fuente.


Usa Linq, es una forma muy rápida y fácil.

string mystring = "0, 10, 20, 30, 100, 200"; var query = from val in mystring.Split('','') select int.Parse(val); foreach (int num in query) { Console.WriteLine(num); }