• Jueves 18 de Abril de 2024, 07:52

Autor Tema:  Separar cadena utilizando Substring en c sharp  (Leído 11486 veces)

LenguajeC

  • Miembro activo
  • **
  • Mensajes: 28
  • Nacionalidad: ar
    • Ver Perfil
Separar cadena utilizando Substring en c sharp
« en: Sábado 4 de Junio de 2011, 23:06 »
0
Hola a todos.
Créanme que agoté todas la pruebas pero no logro separar la cadena encontrado en 5 partes tomando como referencia la coma, el caso es que recibo una lista de precios en un archivo .TXT y necesito mostrar el resultado de una determinada búsqueda, el código es mucho más extenso pero lo simplifique para que se entienda mejor(la búsqueda me funciona correctamente).-

Código: C#
  1. using System;
  2. using System.Collections.Generic;
  3.  
  4. public class MyClass
  5. {
  6.     public static void Main()
  7.     {
  8.  
  9.             string encontrado = "07793065000056,0000468,Aceite COSTA del SOL Girasol pvc x1.5Lt.,12x1.5    ,         4.899,  0.000";   
  10.             string mostrar = "";
  11.             int a = 0;
  12.             for (byte b = 0; b < 5; b++)
  13.             {
  14.                 if (b == 1) { a = 15;}
  15.                 if (b == 2) { a = 24;}
  16.                 if (b == 3) { a = 64;}
  17.                 if (b == 4) { a = 75;}
  18.                 mostrar = encontrado.Substring(a,encontrado.IndexOf(','));
  19.                 Console.WriteLine("" + mostrar);
  20.             }
  21.             Console.ReadKey();
  22.     }
  23. }
  24.  

Parte de la lista de precios en archivo .TXT

Código: C#
  1. 05000000000036,0000003,Vacios de Cerveza                               ,x1u       ,       799.000,  0.000
  2. 05000000000159,0000015,Jabón TOCADOR Varios                         ,X1        ,           0.560,  0.000
  3. 05000000000562,0000056,Jabon Polvo Suelto Miniespuma x 8kg          ,01x8kg    ,    12.690,  0.000
  4. 05000000000579,0000057,PROMO COCA COLA ZERO X 1LT        ,x1        ,          12.690,  0.000
  5. 05000000000616,0000061,Jabón en Polvo SUELTOS                   ,01x01u    ,         2.500,  0.000
  6. 05000000000647,0000064,Pañales SUELTOS                              ,01x10u    ,         2.000,  0.000
  7. 05000000000777,0000077,Jugos Sobres Sueltos                      ,x01u      ,          0.510,  0.000
  8. 05000000000807,0000080,Rollo Cocina Sueltos                          ,24x01u    ,         0.495,  0.000
  9. 05000000000845,0000084,Espirales Sueltos (OCASION)               ,01x04u    ,         0.590,  0.000
  10. 05000100001032,0000103,Azúcar                                           ,10x1Kg    ,         4.390,  0.000
  11. 07791716000028,0000103,Azúcar                                           ,10x1Kg    ,         4.390,  0.000
  12. 07792241000026,0000103,Azúcar                                           ,10x1Kg    ,         4.390,  0.000
  13. 07792241000040,0000103,Azúcar                                           ,10x1Kg    ,         4.390,  0.000
  14. 07796537261245,0000103,Azúcar                                           ,10x1Kg    ,         4.390,  0.000
  15. 07797690000016,0000103,Azúcar                                           ,10x1Kg    ,         4.390,  0.000
  16. 07798019380017,0000103,Azúcar                                           ,10x1Kg    ,         4.390,  0.000
  17. 07798049780023,0000103,Azúcar                                           ,10x1Kg    ,         4.390,  0.000
  18. 07798049780047,0000103,Azúcar                                           ,10x1Kg    ,         4.390,  0.000
  19. 17791426000018,0000103,Azúcar                                           ,10x1Kg    ,         4.390,  0.000
  20. 07790220001705,0000106,Azúcar DUL-C                                 ,10x01Kg   ,         3.090,  0.000
  21. 07791100000283,0000107,Azúcar CHANGO PREMIUM x 1Kg          ,10x1Kg    ,         4.399,  0.000
  22. 07791100004441,0000107,Azúcar CHANGO PREMIUM x 1Kg          ,10x1Kg    ,         4.399,  0.000
  23. 05000000001095,0000109,Azúcar FRONTERITA Paquete x1Kg       ,10x01Kg   ,         4.899,  0.000
  24. 07790220000531,0000109,Azúcar FRONTERITA Paquete x1Kg       ,10x01Kg   ,         4.899,  0.000
  25. 07791100000481,0000110,Azúcar CHANGO paquete x1Kg           ,10x01Kg   ,         4.399,  0.000
  26. 07791100004465,0000110,Azúcar CHANGO paquete x1Kg           ,10x01Kg   ,         4.399,  0.000
  27. 17791100000389,0000110,Azúcar CHANGO paquete x1Kg           ,10x01Kg   ,         4.399,  0.000
  28. 05000000001248,0000124,Sidra de Ocasion Real-ET.NEGRA        ,x1        ,            1.910,  0.000
  29. 05000000002061,0000206,Edulcorante HILERET "1A10" x50u.      ,12x50u    ,         3.125,  0.000
  30. 07794940000109,0000206,Edulcorante HILERET "1A10" x50u.      ,12x50u    ,         3.125,  0.000
  31. 05000000002139,0000213,Azúcar HILERET Light                         ,06x500gr  ,         5.769,  0.000
  32. 07794940000536,0000213,Azúcar HILERET Light                         ,06x500gr  ,         5.769,  0.000
  33. 07794940000567,0000219,Edulcorante HILERET 1A10 Sobres 500u  ,01x500u   ,        14.769,  0.000
  34. 05000000002726,0000272,Dentifrico Suelto x 90g                       ,01x90g    ,         1.900,  0.000
  35. 05000000002733,0000273,Dentifrico Suelto x 140g                      ,01x140g   ,         2.850,  0.000
  36. 05000000002740,0000274,Dentifrico Suelto x 180g                      ,01x180g   ,         3.500,  0.000
  37. 05000000002757,0000275,Papel Higienico Suelto x48u               ,48x1      ,           0.300,  0.000
  38. 05000000002856,0000285,Jugos TANG Suelto x 500u                  ,01x500u   ,         0.570,  0.000
  39. 05000000002863,0000286,Jugo CLIGHT Suelto x 500u                 ,01x500u   ,         0.630,  0.000
  40. 05000000002900,0000290,Jugos TANG Suelto x 50u                   ,01x50u    ,         0.600,  0.000
  41. 05000000002917,0000291,Jugos CLIGHT Suelto x 50u                 ,01x50u    ,         0.650,  0.000
  42. 05000000003068,0000306,Azúcar Impalpable JERACO x400gr.         ,10x400    ,         5.065,  0.000
  43. 07797109000026,0000306,Azúcar Impalpable JERACO x400gr.         ,10x400    ,         5.065,  0.000
  44. 05000000003075,0000307,Azúcar Impalpable JERACO x200gr.         ,24x200    ,         2.535,  0.000
  45. 07797109000019,0000307,Azúcar Impalpable JERACO x200gr.         ,24x200    ,         2.535,  0.000
  46. 07792540081054,0000317,Azúcar LEDESMA REAL - ANCASTE        ,10x01Kg   ,         4.399,  0.000
  47. 07792540111010,0000317,Azúcar LEDESMA REAL - ANCASTE        ,10x01Kg   ,         4.399,  0.000
  48. 07792540111027,0000317,Azúcar LEDESMA REAL - ANCASTE        ,10x01Kg   ,         4.399,  0.000
  49. 05000000003662,0000366,Aceite COSTA DEL SOL Girasol Bidon pvc ,04x5Lt    ,        17.710,  0.000
  50. 07793065000070,0000366,Aceite COSTA DEL SOL Girasol Bidon pvc ,04x5Lt    ,        17.710,  0.000
  51. 07790070012050,0000391,Aceite COCINERO Girasol pet x900cc       ,15x900cc  ,         3.200,  0.000
  52.  

Espero puedan ayudarme, tengo el marote a la miseria.-

Saludos.
Daniel
abraza las cosas y personas malas como si fueran tu mas preciada joya,
Son tus mas grandes maestros de paciencia sabiduría y amor
y cuando lo abrazas dejan de causar dolor.-

ProfesorX

  • Moderador
  • ******
  • Mensajes: 796
  • Nacionalidad: mx
    • Ver Perfil
Re: Separar cadena utilizando Substring en c sharp
« Respuesta #1 en: Domingo 5 de Junio de 2011, 04:58 »
0
Porque tratar de descubrir el hilo negro con Susbstring, cuando me parece que con Split() a mi parecer puedes obtener mas facilmente lo que te propones.

Código: C#
  1.  
  2. using System;
  3. using System.Collections.Generic;
  4. using System.Linq;
  5. using System.Text;
  6.  
  7. public class MyClass
  8. {
  9.     public static void Main()
  10.     {
  11.  
  12.         string encontrado = "07793065000056,0000468,Aceite COSTA del SOL Girasol pvc x1.5Lt.,12x1.5    ,         4.899,  0.000";
  13.         string[] cadenas_separadas;
  14.         cadenas_separadas = encontrado.Split(',');
  15.         foreach (string cadena in cadenas_separadas)
  16.         {
  17.             Console.WriteLine(cadena);
  18.         }
  19.  
  20.         Console.ReadKey();
  21.     }
  22. }
  23.  
  24.  

Creo que se adapta a lo que quieres ¿no?

Recomiendo que siempre revises todos los metodos/propiedades de una clase, para ver si alguno tiene cosas que te puedan servir. En este caso estaba el metodo Split() de la clase string, que no habias visto.

Si no es lo que necesitabs, publica mas detalles de lo que quieres, a ver si te podemos ayudar.

Saludos :)

P.D.: En realidad la cadena se separa en 6 partes, no en 5 como mencionabas, son 5 comas, pero separa 6 cadenas.

NOTA:
==================================================================
Este foro es para ayudar, aprender, compartir... usenlo para eso,
NO SE RESUELVEN DUDAS POR MENSAJE PRIVADO Y MENOS POR CORREO
==================================================================

LenguajeC

  • Miembro activo
  • **
  • Mensajes: 28
  • Nacionalidad: ar
    • Ver Perfil
Re: Separar cadena utilizando Substring en c sharp
« Respuesta #2 en: Domingo 5 de Junio de 2011, 18:43 »
0
Hola ProfesorX
Muchas gracias ese método me solucionó todo.-

Citar
Recomiendo que siempre revises todos los metodos/propiedades de una clase, para ver si alguno tiene cosas que te puedan servir. En este caso estaba el metodo Split() de la clase string,
Amigo, tengo 59 años y no soy tu alumno.-(Esto lo encontré en otro foro:"usa string.split y lo resolverás?" era tan simple como eso).-

Saludos.
Daniel
abraza las cosas y personas malas como si fueran tu mas preciada joya,
Son tus mas grandes maestros de paciencia sabiduría y amor
y cuando lo abrazas dejan de causar dolor.-

ProfesorX

  • Moderador
  • ******
  • Mensajes: 796
  • Nacionalidad: mx
    • Ver Perfil
Re: Separar cadena utilizando Substring en c sharp
« Respuesta #3 en: Domingo 5 de Junio de 2011, 22:11 »
0
Cita de: "LenguajeC"
Amigo, tengo 59 años y no soy tu alumno

Eso lo se, pero igual aplica lo que te mencione, fue una sugerencia, en mi caso yo tengo 41 años, y puedo aprender cosas de gente mas joven y mas vieja que yo, la edad en realidad viene a ser irrelevante (conozco gente de  12 años que le da la vuelta a gente mayor, y tambien gente de mas de 50 años que tambien saben mucho, mas que gente de 20 a 30 años, que seria la edad "ideal"). Lo de revisa los metodos de las clases fue mas como consejo, no como orden. Yo siempre reviso los metodos/propiedades de las clases, para ver que me puede servir para hacer mejor mi trabajo. Eso no significa que no puedas preguntar si tienes dudas, sino mas bien que debes investigar un poco mas ;)

Tu tambien puedes hacerlo utilizando el examinador de objetos de Visual C#, veras que te ayuda muchisimo, y asi vas conociendo mas de cada clase de .NET.

Espero no te lo hayas tomado a mal.

Saludos :)

NOTA:
==================================================================
Este foro es para ayudar, aprender, compartir... usenlo para eso,
NO SE RESUELVEN DUDAS POR MENSAJE PRIVADO Y MENOS POR CORREO
==================================================================

LenguajeC

  • Miembro activo
  • **
  • Mensajes: 28
  • Nacionalidad: ar
    • Ver Perfil
Re: Separar cadena utilizando Substring en c sharp
« Respuesta #4 en: Lunes 6 de Junio de 2011, 14:02 »
0
Hola ProfesorX
Muy bien, esta todo muy bien, en cuanto al examinador de objetos de Visual C# ni idea ya que uso como IDE el SnippetCompiler, me lo sugirieron para empezar con programas pequeños.-
Ahora tengo otra duda, el texto encontrado lo necesito poner en el portapapeles y no puedo encontrar el método correspondiente, hay buena información al respecto en la Web pero no para programas de consola.-

En el futuro te voy a enviar un privado, debes ser muy buena persona pero muy buena para reaccionar como lo hiciste después de mi post, son con los que deseo relacionarme.- :beer:
Como siempre muchas gracias x tu ayuda.-

Un abrazo.
Daniel
abraza las cosas y personas malas como si fueran tu mas preciada joya,
Son tus mas grandes maestros de paciencia sabiduría y amor
y cuando lo abrazas dejan de causar dolor.-

gabio2

  • Miembro MUY activo
  • ***
  • Mensajes: 402
  • Nacionalidad: mx
    • Ver Perfil
Re: Separar cadena utilizando Substring en c sharp
« Respuesta #5 en: Jueves 9 de Junio de 2011, 16:46 »
0
Diculpa que me entrometa pero, a que te refieres con ponerlo en el portapapeles?.. o que es lo que deseas hacer específicamente? si pudieras explicar un poco más a detalle.. tal vez  se te pueda apoyar saludos... :)
@gabio87

LenguajeC

  • Miembro activo
  • **
  • Mensajes: 28
  • Nacionalidad: ar
    • Ver Perfil
Re: Separar cadena utilizando Substring en c sharp
« Respuesta #6 en: Jueves 9 de Junio de 2011, 19:39 »
0
Hola gabio2.
Voy a tratar de ser práctico.-
Esto es lo que obtengo en una determinada búsqueda:
05000000003662,0000366,Aceite COSTA DEL SOL Girasol Bidon pvc ,04x5Lt    ,        17.710,  0.000
(Archivo .TXT - la lista de precios que me envia el proveedor).-
0000366,Aceite COSTA DEL SOL Girasol Bidon pvc
Esta parte que son el código del proveedor y la descripción del producto, necesito ponerlo en el portapapeles con algún método para luego volcarlo(Ctrl+v) en el archivo donde se va conformando el pedido.-(Todo en consola no en modo visual).-

Espero se entienda.
Saludos.
Daniel
abraza las cosas y personas malas como si fueran tu mas preciada joya,
Son tus mas grandes maestros de paciencia sabiduría y amor
y cuando lo abrazas dejan de causar dolor.-

gabio2

  • Miembro MUY activo
  • ***
  • Mensajes: 402
  • Nacionalidad: mx
    • Ver Perfil
Re: Separar cadena utilizando Substring en c sharp
« Respuesta #7 en: Jueves 9 de Junio de 2011, 20:23 »
0
Realmente es fácil, sin embargo en como consola no te deja usar el CTRL + V o bueno almenos amí no me deja....

Te explico rapidamente, el Portapapeles es una herramienta para Formularios, es decir funciona para WinForms, sin embargo eso no es pretexto para no usarlo en tu ambiente consola, simplemente tienes que seguir estos pasos:

1) Clic derecho a tu proyecto, Agregar Referencia, luego te aparece una pantalla que tiene la pestaña .NET justamente seleccionas esa y buscas la siguiente referencia:

System.Windows.Forms, la palomeas y das clic en Aceptar, luego solo tienes que hacer referencia:

Código: C#
  1.  
  2. using System.Windows.Forms;
  3.  
  4.  

2) en tu método Main tienes que ponerle la siguiente etiqueta:
Código: C#
  1. [STAThread]
  2.  
ejemplo:


Código: C#
  1.  
  2.  [STAThread]
  3.         static void Main(string[] args)
  4.         {
  5.            
  6.         }
  7.  
  8.  

Y listo, entonces ya puedes usar la clase Clipboard un ejemplo rápido

Código: C#
  1.  
  2.   [STAThread]
  3.         static void Main(string[] args)
  4.         {
  5.             Console.WriteLine("Prueba");
  6.             Clipboard.SetText("PRUEBA"); // Aquí lo mandamos al portapapeles
  7.             Console.WriteLine(Clipboard.GetText()); //Aquí lo obtenemos.
  8.             Console.Read();
  9.         }
  10.  
  11.  

Listo, espero te sirva saludos! :)
@gabio87

LenguajeC

  • Miembro activo
  • **
  • Mensajes: 28
  • Nacionalidad: ar
    • Ver Perfil
Re: Separar cadena utilizando Substring en c sharp
« Respuesta #8 en: Jueves 9 de Junio de 2011, 22:00 »
0
Hola gabio2.
Perfecto, es lo que necesitaba.

Muchas gracias.-
Saludos Daniel
abraza las cosas y personas malas como si fueran tu mas preciada joya,
Son tus mas grandes maestros de paciencia sabiduría y amor
y cuando lo abrazas dejan de causar dolor.-