Tengo un archivo de texto lleno de registros donde cada campo en cada registro tiene un ancho fijo. Mi primer enfoque sería analizar cada registro simplemente usando string.Substring(). ¿Hay una mejor manera?Leer el registro de ancho fijo desde el archivo de texto
Por ejemplo, el formato podría ser descrito como:
<Field1(8)><Field2(16)><Field3(12)>
Y un ejemplo de archivo con dos registros podría parecerse a:
SomeData000000000SomeMoreData
Data2 0000000000555555MoreData
sólo quiero asegurarme de que no estoy pasando por alto una forma más elegante que Substring().
Actualización: que en última instancia, fui con una expresión regular como Killersponge sugirió:
private readonly Regex reLot = new Regex(REGEX_LOT, RegexOptions.Compiled);
const string REGEX_LOT = "^(?<Field1>.{6})" +
"(?<Field2>.{16})" +
"(?<Field3>.{12})";
entonces utilizo el siguiente para acceder a los campos:
Match match = reLot.Match(record);
string field1 = match.Groups["Field1"].Value;
Sí, traté de pensar en una forma de usar una expresión regular, pero creo que es la herramienta incorrecta para el trabajo y, como dijiste, excesivo. –
regex?^(. {8}) (. {16}) (. *) $ Para la definición de campos anterior, suponiendo que el último campo puede rellenarse o no con espacios. – Sekhat