Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Flavio Lima_168409

[Resolvido] Trabalhando com Expressões regulares no C#

Recommended Posts

Boa tarde, gostaria de saber como posso remover os items que estão sendo listados na listBox através das expressoes regulares. Estou usando esses dois métodos, porém ele lista todos os items, ou nao lista nada.

 

 

 

//1º
             if (System.Text.RegularExpressions.Regex.IsMatch(Arquivos.ToString(),@"^[^\s][a-zA-Z0-9]*$"))
                       {
                            ListBox.items.add(fileInfo.Name);

                       }
                       else
                       {

                       }

//2º

                       string teste = Arquivos.ToString();

                       Regex t = new Regex(@"^[^\s][a-zA-Z0-9]*$");
                       if (t.IsMatch(synyster))
                       {

                           // Válido.
                           lstXML.Items.Add(fileinfo.Name);
                       }

                       else
                       {}

}

Compartilhar este post


Link para o post
Compartilhar em outros sites

Boa tarde,

Acho que expliquei mal, pode me dar um exemplo de como ignorar um arquivo que não está no nome padrão, o padrão só deve possuir numeros. Já tentei pelo int.TryParse porém não deu certo pois o mesmo arquivo padrão tambem possui letras no final.

 

Acredito que eu teria que fazer um método substring pra percorrer pelo menos os 22 primeiros caracteres e ignorar os que possuem letras e simbolos.

 

Agradeço desde já.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Faça assim:

 

 

//nome do arquivo
           String nomearquivo="";
           //array de chars
           char[] array = nomearquivo.ToCharArray();
           //variável de verificação
           Boolean Valido = true;

          //Faz o for percorrer todos as letras do nome
           for (int i = 0; i < array.Length; i++)
           {
               //Verificação
               if (!(char.IsNumber(array[i])))
               {
                   Valido = false;
                   break;
               }

           }

           //se não for válido
           if (!(Valido))
           {
               //seu código para ignorar
           }

           //se válido
           else
           {
               //válido
           }

 

 

Espero que tenha entendido a lógica, qualquer duvida só perguntar ^^

Compartilhar este post


Link para o post
Compartilhar em outros sites

A lógica eu entendi, ta uma olhada no código. Aqui não Debugou não. E vê se tem algum erro em relação ao meu foreach ou o meu Items.Remove()

 

   //Começamos a listar os arquivos
                   foreach (FileInfo fileinfo in Arquivos)
                   {

                       lstXML.Items.Add(fileinfo.Name);




                       String nomearquivo = fileinfo.Name;

                       //array de chars
                           char[] array = nomearquivo.ToCharArray();

                       //variável de verificação
                           Boolean Valido = true;

                           //Faz o for percorrer todos as letras do nome
                           for (int i = 0; i < array.Length; i++)
                           {
                               //Verificação
                               if (!(char.IsNumber(array[i])))
                               {
                                   Valido = false;
                                   break;
                               }

                           }



                               //se não for válido

                               if (!(Valido))
                               {


                                   //seu código para ignorar
                                   lstXML.Items.Remove(fileinfo.Name);


                               }

                                   //se válido
                               else
                               {
                                   //válido
                                   lstXML.Items.Add(fileinfo.Name);
                               }

Compartilhar este post


Link para o post
Compartilhar em outros sites

Cara, aparentemente esse for não está percorrendo os caracteres, porque no if abaixo ele nao ta fazendo a verificação. Acredito que ele esteja percorrendo os nome por nome dentro do meu foreach

 

                       //Faz o for percorrer todos as letras do nome
                       for (int i = 0; i < array.Length; i++)
                       {
                           //Verificação
                           if (!(char.IsNumber(array[i])))
                           {

                               Valido = false;
                               break;


                           }

Compartilhar este post


Link para o post
Compartilhar em outros sites

É porque a letra é um numero, ai ele pula esse if.

 

Mas cara eu acho melhor você fazer por partes, primeiro você adiciona todos os arquivos na arraylist, sem distinção nem nada. Ai para verificar pegue uma listbox e veja se os nomes estão indo mesmo. Depois use um for para percorrer a Arraylist e jogar todo nome para o char array, e ai você faz a verificação dentro do for.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.