Filtro de valores em um array através de Expressões regulares - Laboratorio de Garagem (arduino, eletrônica, robotica, hacking)2024-03-29T15:53:22Zhttps://labdegaragem.com/forum/topics/filtro-de-valores-em-um-array-atrav-s-de-express-es-regulares?feed=yes&xn_auth=noSérgio, Ok. Fico feliz que en…tag:labdegaragem.com,2016-01-22:6223006:Comment:5079532016-01-22T22:26:58.868ZJose Augusto Cintrahttps://labdegaragem.com/profile/JoseAugustoCintra
<p>Sérgio, Ok. Fico feliz que encontrou uma solução.</p>
<p>Abraço</p>
<p>Sérgio, Ok. Fico feliz que encontrou uma solução.</p>
<p>Abraço</p> Jose Augusto boa noite.
Resol…tag:labdegaragem.com,2016-01-22:6223006:Comment:5080502016-01-22T22:22:14.048ZSergio Caetano da Silvahttps://labdegaragem.com/profile/SergioCaetanodaSilva
<p>Jose Augusto boa noite.</p>
<p>Resolvi esta questão, mas com o for colocado dava muito problema na performance, ou seja, ele demorava bastante para fazer a verificação de caracteres válidos e preenchia no array alguns valores NULL e colocava no array strings não numéricas.Ai quando ia calcular a média dava pau! Mas consegui resolver com o replace antes do calculo da média e retirada dos valores nulos do Array.</p>
<p></p>
<p>Obrigado pela ajuda.</p>
<p>Jose Augusto boa noite.</p>
<p>Resolvi esta questão, mas com o for colocado dava muito problema na performance, ou seja, ele demorava bastante para fazer a verificação de caracteres válidos e preenchia no array alguns valores NULL e colocava no array strings não numéricas.Ai quando ia calcular a média dava pau! Mas consegui resolver com o replace antes do calculo da média e retirada dos valores nulos do Array.</p>
<p></p>
<p>Obrigado pela ajuda.</p> Otimo, é isso mesmo que eu pr…tag:labdegaragem.com,2016-01-19:6223006:Comment:5070622016-01-19T00:03:33.710ZSergio Caetano da Silvahttps://labdegaragem.com/profile/SergioCaetanodaSilva
<p>Otimo, é isso mesmo que eu preciso, vou testar e retorno depois.Valeu.</p>
<p></p>
<p>Otimo, é isso mesmo que eu preciso, vou testar e retorno depois.Valeu.</p>
<p></p> Esse loop que te passei vai s…tag:labdegaragem.com,2016-01-18:6223006:Comment:5072342016-01-18T23:27:36.897ZJose Augusto Cintrahttps://labdegaragem.com/profile/JoseAugustoCintra
<p>Esse loop que te passei vai só limpar a variável rxstring.</p>
<p>Se ela contiver o valor "#123#abc12#75@#88OK#", a variável novaString vai ficar</p>
<p>"#123#12#75#88#"</p>
<p>Depois é só dar o split em cima dela</p>
<p>A variável caracteresvalidos é só uma auxiliar contendo os caracteres que o loop não pode limpar</p>
<p>Esse loop que te passei vai só limpar a variável rxstring.</p>
<p>Se ela contiver o valor "#123#abc12#75@#88OK#", a variável novaString vai ficar</p>
<p>"#123#12#75#88#"</p>
<p>Depois é só dar o split em cima dela</p>
<p>A variável caracteresvalidos é só uma auxiliar contendo os caracteres que o loop não pode limpar</p> no lugar desta variável carac…tag:labdegaragem.com,2016-01-18:6223006:Comment:5069612016-01-18T22:56:56.889ZSergio Caetano da Silvahttps://labdegaragem.com/profile/SergioCaetanodaSilva
<p>no lugar desta variável caracteresValidos eu podeira colocar uma expressão regular para aceitar uma sequencia de dez números com os separadores # ?Pq estes números não são fixos, eles alteram todo o momento em que eu chamo este método e eu faço uma nova leitura do meu ultrassom.</p>
<p>no lugar desta variável caracteresValidos eu podeira colocar uma expressão regular para aceitar uma sequencia de dez números com os separadores # ?Pq estes números não são fixos, eles alteram todo o momento em que eu chamo este método e eu faço uma nova leitura do meu ultrassom.</p> Nesse caso é a variável RxStr…tag:labdegaragem.com,2016-01-18:6223006:Comment:5072312016-01-18T22:19:19.321ZJose Augusto Cintrahttps://labdegaragem.com/profile/JoseAugustoCintra
<p>Nesse caso é a variável RxString que tem que ser tratada retirando os caracteres desnecessários.</p>
<p>Você fez isso com expressões regulares, mas por algum motivo não está dando certo.</p>
<p>Tenteretirar as expressões regulares e fazer o seguinte para limpar essa String deixando somente caracteres "#0123456789":</p>
<p></p>
<p>String novaString = "";</p>
<p>String caracteresValidos = "#0123456789"; </p>
<p>for(int x = 0; x <…</p>
<p>Nesse caso é a variável RxString que tem que ser tratada retirando os caracteres desnecessários.</p>
<p>Você fez isso com expressões regulares, mas por algum motivo não está dando certo.</p>
<p>Tenteretirar as expressões regulares e fazer o seguinte para limpar essa String deixando somente caracteres "#0123456789":</p>
<p></p>
<p>String novaString = "";</p>
<p>String caracteresValidos = "#0123456789"; </p>
<p>for(int x = 0; x < RxString.length(); x++){ </p>
<p> c = RxString.charAt(x);</p>
<p> if (caracteresValidos.indexOf(c) >=0 ){</p>
<p> novaString += c;</p>
<p> }</p>
<p> }</p>
<p>Pode ser que dê erro na concatenação de String com char, aí vc tem que converter c para String</p>
<p></p> Segue imagem do array com dad…tag:labdegaragem.com,2016-01-18:6223006:Comment:5072262016-01-18T21:34:13.991ZSergio Caetano da Silvahttps://labdegaragem.com/profile/SergioCaetanodaSilva
<p>Segue imagem do array com dados "errados"</p>
<p>Segue imagem do array com dados "errados"</p> Augusto testei seu trecho de…tag:labdegaragem.com,2016-01-18:6223006:Comment:5069552016-01-18T21:32:47.993ZSergio Caetano da Silvahttps://labdegaragem.com/profile/SergioCaetanodaSilva
<p>Augusto testei seu trecho de código e esta dando o mesmo erro...Este array SVetor só deveria ter informações de distancia com os delimitadores como: 7#8#9#7#..., no entanto esta armazenando tudo que vem pela serial e no inicio e fim do array esta vindo uma posição em branco.Segue arquivo anexo mostrando o debug.</p>
<p>Augusto testei seu trecho de código e esta dando o mesmo erro...Este array SVetor só deveria ter informações de distancia com os delimitadores como: 7#8#9#7#..., no entanto esta armazenando tudo que vem pela serial e no inicio e fim do array esta vindo uma posição em branco.Segue arquivo anexo mostrando o debug.</p> Jose Augusto Cintra.Realmente…tag:labdegaragem.com,2016-01-18:6223006:Comment:5070512016-01-18T21:11:45.584ZSergio Caetano da Silvahttps://labdegaragem.com/profile/SergioCaetanodaSilva
<p>Jose Augusto Cintra.Realmente esta vindo elementos no meu array vazios e trazendo também as strings de retorno do Arduíno onde deveriam ser apenas valores numéricos de distancia.Vou testar com a sua informação e depois te aviso.Obrigado.</p>
<p>Jose Augusto Cintra.Realmente esta vindo elementos no meu array vazios e trazendo também as strings de retorno do Arduíno onde deveriam ser apenas valores numéricos de distancia.Vou testar com a sua informação e depois te aviso.Obrigado.</p> Sergio, boa noite!
Não tenho…tag:labdegaragem.com,2016-01-18:6223006:Comment:5072152016-01-18T20:47:20.016ZJose Augusto Cintrahttps://labdegaragem.com/profile/JoseAugustoCintra
<p>Sergio, boa noite!</p>
<p>Não tenho como testar o seu código agora, mas já aconteceu comigo de o split trazer um elemento de array nulo e nesse caso provocaria esse erro que vc relatou.</p>
<p>Teste se o elemento do vetor veio nulo ou vazio</p>
<p>Tente colocar a seguinte condição dentro do seu for:</p>
<p><strong>for (int n = 0; n <= 9; n++)</strong><br></br> <strong>{</strong></p>
<pre class="lang-cs prettyprint prettyprinted"><strong><code><span class="kwd">if…</span></code></strong></pre>
<p>Sergio, boa noite!</p>
<p>Não tenho como testar o seu código agora, mas já aconteceu comigo de o split trazer um elemento de array nulo e nesse caso provocaria esse erro que vc relatou.</p>
<p>Teste se o elemento do vetor veio nulo ou vazio</p>
<p>Tente colocar a seguinte condição dentro do seu for:</p>
<p><strong>for (int n = 0; n <= 9; n++)</strong><br/> <strong>{</strong></p>
<pre class="lang-cs prettyprint prettyprinted"><strong><code><span class="kwd">if</span><span class="pln"> </span><span class="pun">(!</span><span class="typ">String</span><span class="pun">.</span><span class="typ">IsNullOrEmpty</span><span class="pun">(</span><span class="pun">[SVetor[n]</span><span class="pun">))</span></code> {</strong></pre>
<p><strong> cont = cont + 1;</strong><br/><strong> int caracter = Int32.Parse(SVetor[n]);</strong><br/><strong> soma += Convert.ToInt32(caracter);</strong></p>
<p><strong> }</strong><br/> <strong>}</strong></p>
<pre class="lang-cs prettyprint prettyprinted"><code><span class="pun"><br/>Procure debugar o código para descobrir o seguinte:<br/>O que veio na String <span style="font-size: 10pt; font-family: Arial, sans-serif;">SString?</span><br/>Quanto elementos tem o vetor SVetor e quais são eles?<br/>Espero ter ajudado. Caso não resolva avisa para testarmos as outras linhas<br/><br/><br/></span></code></pre>