Principales respuestas
Cómo sacar valores con split de un archivo txt

Pregunta
-
Respuestas
-
Alberto Poblacion, ya lo solucione y lo hice con
string[] stringSeparators = new string[] {""};
string[] resul;
resul = line.Split(stringSeparators, StringSplitOptions.RemoveEmptyEntries);
Este fue mi método para solucionarlo;
string[] lines = File.ReadAllLines("ruta archivo txt");
string linea = string.Empty;
foreach (string line in lines)
{
string[] stringSeparators = new string[] { "<CODIGO_TRAMITE>", "</CODIGO_TRAMITE>",
"<NOMBRE_TRAMITE>", "</NOMBRE_TRAMITE>",
"<CODIGO_TIPO_DOCUMENTAL>","</CODIGO_TIPO_DOCUMENTAL>",
"<NOMBRE_TIPO_DOCUMENTAL>", "</NOMBRE_TIPO_DOCUMENTAL>",
"<NOMB_DEP>","</NOMB_DEP>",
"<NOMB_MUN>","</NOMB_MUN>",
"<CC_PER>","</CC_PER>",
"<DIRE_PER>","</DIRE_PER>",
"<NOMB_PER>","</NOMB_PER>",
"<PLACA>","</PLACA>",
"<VIGENCIA>","</VIGENCIA>",
"<OAVALUO>","</OAVALUO>",
"<OIMPUESTO>","</OIMPUESTO>",
"<DEUDA>","</DEUDA>",
"<FECH_DOC>","</FECH_DOC>",
"<RADI_DOC>","</RADI_DOC>"};
string[] resul;
resul = line.Split(stringSeparators, StringSplitOptions.RemoveEmptyEntries);
foreach (String item in resul)
{
Console.WriteLine(item);
Console.ReadKey();
}
}- Marcado como respuesta Jonathan Restrepo Macareno viernes, 26 de junio de 2020 22:28
Todas las respuestas
-
hola
Pero esos son tag de xml, no se usa ningun split
Se supone que tienes un xml mas grande que solo esos tags sueltos entonces podrias aplicar un parse usando XmlDocument o quizas linq to xml
XmlDocument.LoadXml(String) Method
fijate el ejemplo del link como se puede cargar el xml y acceder a los nodos para obtener sus valores
saludos
Leandro Tuttini
Blog
MVP Profile
Buenos Aires
Argentina -
¿Cómo puedo extraer el valor 27 y juanito con split, de un archivo txt conformado con esta estructura:?
Bueno, el split no es precisamente lo más indicado para esa estructura, pero si te empeñas en usar un split puedes hacerlo así:
string[] partes = linea.Split(new char[]{´'<','>'});
string valor = partes[2];
Si esto lo haces en todas las líneas, el valor será 27 en las líneas impares y juanito en las pares.
-
Esta es mi estructura completa del txt que debo sacar la información:
NOTA: Así como esta debo extraerla.
<CODIGO_TRAMITE>27</CODIGO_TRAMITE>
<NOMBRE_TRAMITE>juanito</NOMBRE_TRAMITE>
<CODIGO_TIPO_DOCUMENTAL>12</CODIGO_TIPO_DOCUMENTAL>
<NOMBRE_TIPO_DOCUMENTAL>juanita</NOMBRE_TIPO_DOCUMENTAL>
<NOMB_DEP>ANTI</NOMB_DEP><NOMB_MUN>BE</NOMB_MUN><CC_PER>705</CC_PER><DIRE_PER>CRA 69</DIRE_PER>
<NOMB_PER>JUAN</NOMB_PER><PLACA>GQ04</PLACA>
<VIGENCIA>2015</VIGENCIA><OAVALUO>9000</OAVALUO><OIMPUESTO>440</OIMPUESTO>
<VIGENCIA>2016</VIGENCIA><OAVALUO>4000</OAVALUO><OIMPUESTO>450</OIMPUESTO>
<VIGENCIA>2017</VIGENCIA><OAVALUO>2300</OAVALUO><OIMPUESTO>480</OIMPUESTO>
<DEUDA>137000</DEUDA>
<FECH_DOC>2019</FECH_DOC><RADI_DOC>001109</RADI_DOC>¿O cual seria la mejor manera de extraer la información?
-
Alberto Poblacion, con su método del split me funciona pero solo con las 4 primeras lineas, con la linea 5 =<NOMB_DEP>ANTI</NOMB_DEP><NOMB_MUN>BE</NOMB_MUN><CC_PER>705</CC_PER> solo toma el valor ANTI pero no toma los valores BE y 705.
¿Como podría extraer esos valores?.
-
Ah, mi hipótesis era que todas las líneas eran similares a las que mostraste como ejemplo, por eso saca un único valor de cada línea usando partes[2]. Si puede haber líneas con más elementos, tienes que ir incrementando el índice de partes de 3 en 3 para sacar los siguientes valores: partes[2], partes[5], partes[8]...
Usando partes.Length puedes determinar cuántos valores había en la línea, para saber dónde parar de incrementar el índice.
Y sí, las cosas se van complicando. Por eso decíamos al principio que usar split no es precisamente el método más indicado para procesar un archivo de este tipo.
-
Alberto Poblacion, ya lo solucione y lo hice con
string[] stringSeparators = new string[] {""};
string[] resul;
resul = line.Split(stringSeparators, StringSplitOptions.RemoveEmptyEntries);
Este fue mi método para solucionarlo;
string[] lines = File.ReadAllLines("ruta archivo txt");
string linea = string.Empty;
foreach (string line in lines)
{
string[] stringSeparators = new string[] { "<CODIGO_TRAMITE>", "</CODIGO_TRAMITE>",
"<NOMBRE_TRAMITE>", "</NOMBRE_TRAMITE>",
"<CODIGO_TIPO_DOCUMENTAL>","</CODIGO_TIPO_DOCUMENTAL>",
"<NOMBRE_TIPO_DOCUMENTAL>", "</NOMBRE_TIPO_DOCUMENTAL>",
"<NOMB_DEP>","</NOMB_DEP>",
"<NOMB_MUN>","</NOMB_MUN>",
"<CC_PER>","</CC_PER>",
"<DIRE_PER>","</DIRE_PER>",
"<NOMB_PER>","</NOMB_PER>",
"<PLACA>","</PLACA>",
"<VIGENCIA>","</VIGENCIA>",
"<OAVALUO>","</OAVALUO>",
"<OIMPUESTO>","</OIMPUESTO>",
"<DEUDA>","</DEUDA>",
"<FECH_DOC>","</FECH_DOC>",
"<RADI_DOC>","</RADI_DOC>"};
string[] resul;
resul = line.Split(stringSeparators, StringSplitOptions.RemoveEmptyEntries);
foreach (String item in resul)
{
Console.WriteLine(item);
Console.ReadKey();
}
}- Marcado como respuesta Jonathan Restrepo Macareno viernes, 26 de junio de 2020 22:28
-
hola
>> ya lo solucione y lo hice con
disculpa que lo diga y sea sincero, es horrible esa solucion
tienes un xml y parsea como hace 20 años cortando string, usa el poder de los parse para que sea mas simple, pero no vas por el peor de los camino
saludos
Leandro Tuttini
Blog
MVP Profile
Buenos Aires
Argentina- Editado Leandro TuttiniMVP viernes, 26 de junio de 2020 23:31
-