2011-09-12 24 views
23

tengo una cadena:C#: dividiendo una cadena y no volver cadena vacía

a = "1;2;3;" 

Y me gustaría split de esta manera:

foreach (string b in a.split(';')) 

¿Cómo puedo asegurarme de que regrese solo 1, 2, 3 y no una 'cadena vacía'?

Si divido 1;2;3, obtendré lo que quiero. Pero si divido 1;2;3;, entonces obtengo una 'cadena vacía' adicional. He tomado sugerencias y hecho esto:

string[] batchstring = batch_idTextBox.Text.Split(';', StringSplitOptions.RemoveEmptyEntries); 

Sin embargo, yo estoy recibiendo estos errores:

de error 1 El partido mejor método sobrecargado para 'string.split (params char [])' tiene algunos argumentos no válidos C: \ Documents and Settings \ agordon \ Mis documentos \ Visual Studio 2008 \ Projects \ lomdb \ EnterData \ EntradaDeDatos \ DAL.cs 18 36 EnterData

error 2 Argumento '2': no ​​se puede convertir de ' System.StringSplitOptions ' a 'carbón' C: \ Documents and Settings \ agordon \ Mis documentos \ Visual Studio 2008 \ Projects \ lomdb \ EnterData \ EntradaDeDatos \ DAL.cs 18 68 EnterData

Respuesta

43

Cadena.Dividir toma una serie al incluir cualquier StringSplitOptions:

string[] batchstring = batch_idTextBox.Text.Split(new [] { ';' }, StringSplitOptions.RemoveEmptyEntries); 

Si no necesita opciones, la sintaxis se hace más fácil:

string[] batchstring = batch_idTextBox.Text.Split(';'); 
5

Pass StringSplitOptions.RemoveEmptyEntries al método de Split.

método Edit

La escisión no tiene una sobrecarga de dividir por un solo carácter. Debe especificar una matriz de caracteres.

foo.Split(new char[] {';'}, StringSplitOptions.RemoveEmptyEntries); 
1

dar a este un tiro:

string test = "1;2;3;"; 
test = String.Join(",", test.TrimEnd((char)59).Split((char)59)); 

string test = "1;2;3;"; 
test = String.Join(",", test.TrimEnd(';').Split(';')); 
1

no sabía acerca de las opciones de división. Si usted no tuvo que podría ...

a.Split(';').Where(s => s.Length > 0).ToArray(); 
1

Uso

a.Split(new[] { ';' }, StringSplitOptions.RemoveEmptyEntries); 

Hay 4 sobrecargas de .Split, dos de ellos no apoyan StringSplitOptions y utilizar el formato params (por lo que no es necesario crear una matriz de divisores), dos de ellos admiten StringSplitOptions y requieren una matriz de char o string.

1
string line="Hello! Have nice day." 
string[] substr = line.Split(new[] {' '}, 2); 

Por encima de código dividir la línea en dos subseries basado en el primer espacio substr [0] tendrá "¡Hola!" substr [1] tendrá "Que tengas un buen día". Aquí 2 en Split es un contador de enteros, puede pasar cualquier valor en función de sus necesidades.

Cuestiones relacionadas