1. Este site usa cookies. Ao continuar a usar este site está a concordar com o nosso uso de cookies. Saber Mais.

Ajuda split C#

Discussão em 'Programação' iniciada por alfinete, 6 de Janeiro de 2009. (Respostas: 2; Visualizações: 1519)

  1. alfinete

    alfinete Power Member

    Código:
    1 conjunto de ferramentas,
        1 Expansor;
    1 protecção maleável com 2mx2m em plástico transparente,
    1 conjunto de material,
        cunhas;
    
    tenho esta listagem que é como quero que ela apareça numa label depois de tratada, ou seja vou passa-la para uma string ....

    Código:
     string texto = "1 conjunto de ferramentas,1 Expansor;2 Expansor;1 protecção maleável com 2mx2m em plástico transparente,1 conjunto de material,cunhas;botas;";
    
    tenho os termos separados por , e ; isto porque;
    o que está antes de ',' cooresponde a termo principal
    antes de ;, termo secundário pertencente ao termo proncipal antrerior.


    o que eu quero é o seguinte ....


    ao ter a string texto com os devidos separadores, quero fazer um algoritmo que me separe os titulos e subtitulos conforme a minha configuração do , e ; tal como vistos na listagem que pus ao inicio deste poste.

    sendo assim decidi utilizar o split



    Código:
    string texto = "1 conjunto de ferramentas,1 Expansor;2 Expansor;1 protecção maleável com 2mx2m em plástico transparente,1 conjunto de material,cunhas;botas;";
            string textofinal = string.Empty;
            string textosubfinal = string.Empty;
    
            private void Form1_Load(object sender, EventArgs e)
            {
                lbltexto.Text  = texto;  
      
    
            }
    
            private void button1_Click(object sender, EventArgs e)
            {
               [COLOR=Red] string[] textovirg = texto.Split(',');
                   for (int i = 0; i < textovirg.Length; i++)
                    {
                        
                        textofinal = textofinal + "- " + textovirg[i] + "\n";[/COLOR]
    
                     [COLOR=Yellow]   string[] textopontvirg = textovirg[i].Split(';');
                    
                             for (int j = 0; j < textopontvirg.Length; j++)
    
                                textofinal = textofinal + "   - " + textopontvirg[j] + "\n";[/COLOR]
                      
                [COLOR=Red]    }
    
               lblfinal.Text=textofinal;  [/COLOR]
            }
    
    se puser no code do botão o code que esta a vermelho, ele faz tdo bem em relação a listagem com ,
    mas quando ponho o amarelo , estraga tudo...

    gostava que me ajudassem a resolver o problema

    obrigada
     
  2. Armadillo

    Armadillo Folding Member

    pressupondo que queres o output em plaintext, não seria mais simples substituir "," por ", + \n" e ";," por "; +<tab> + \n", em vez de andares com o split?

    cumps
     
  3. alfinete

    alfinete Power Member

    Código:
    
     char[] delimiterChars = { ',', ';' };
                string[] textovirg = texto.Split(delimiterChars);
                   for (int i = 0; i < textovirg.Length; i++)
                    {
    
                      
                        textofinal = textofinal + "- " + textovirg[i] + "\n";
                      
                      
                   
                        
                    }
    
               lblfinal.Text=textofinal;  
    
    assim ja dá

    mas agra quero detectar qual foi o split por onde ele passou como posso afzer isso
     

Partilhar esta Página