2011-08-16 29 views
7

Estoy tratando de analizar un conjunto de archivos de datos de "ancho fijo", lo uso entre comillas porque el ancho es diferente por archivo de datos. Sin embargo, los campos están separados por X espacios, así que pensé simplemente leer en la línea, y luego hacer la línea. División ('')String.Split() - tratando los delimitadores consecutivos como uno

¡Sin embargo, esto no funciona en espacios consecutivos! !

Respuesta

17

Tiene un par de opciones.

La primera es utilizar la sobrecarga de string.Split() que acepta un parámetro StringSplitOptions y pase StringSplitOptions.RemoveEmptyEntries:

string[] columns = lineOfText.Split(new [] {' '}, StringSplitOptions.RemoveEmptyEntries); 

De esa manera, si tiene varios espacios en una fila, se descartarán las entradas vacías que se generan .

La segunda opción es usar una expresión regular para hacer su análisis sintáctico. Esto probablemente no sea necesario en su caso, pero podría ser útil si el formato se vuelve más complicado o si espera que cambie ligeramente con el tiempo.

+0

+1, pero Regex parece un poco por la borda para dividir las líneas en valores separados por espacios. La opción 1 debería estar bien. – StriplingWarrior

+0

@Stripling Bastante justo; Siento que es preferible solo porque los grupos de captura nombrados y las restricciones flexibles hacen que el ajuste a los formatos cambiantes sea más fácil. Pero sí, en este caso simple la opción 1 es más que suficiente. – dlev

Cuestiones relacionadas