kapiaba Posted September 12, 2013 Report Share Posted September 12, 2013 Galera, como faço para Pegar conteúdo antes do @hotmail.com? Exempo: carioca@hotmail.com - Quero somente o carioca joaopaulo@terra,com.br - Quero somente o joaopaulo O usuário digita o email dele, e o programa VALIDA e pega a string antes do @ e guarda. É possivel: Obg, abs. MatheusFarias 1 Quote Link to comment Share on other sites More sharing options...
Arthur Silvestre Posted September 12, 2013 Report Share Posted September 12, 2013 Variavel:= Arthur@ig.com.br SegundaVariavel:= Substr( Variavel , 1 , ( AT( "@" , Variavel )-1 ) ) Retorno: SegundaVariavel == 'Arthur' MatheusFarias 1 Quote Link to comment Share on other sites More sharing options...
emotta Posted September 12, 2013 Report Share Posted September 12, 2013 A solução acima já resolve seu problema, mas segue aqui uma que tem na própria documentação do xHarbour que pode ajudar em casos mais complexos, como se fosse o caso de voce precisar localizar um email dentro de um texto ou separar todas as partes. Divirta-se com EXPRESSÃO REGULAR: (veja que ele da a solucao para o seu problema separando todas as partes do email em um array, nesta linha abaixo) aResult := HB_RegExSplit( "[.@]", cEMail )? "----- email components --"AEval( aResult, {|c| QOut© } ) =============================================== EXEMPLO COMPLETO: // The example demonstrates the result of parsing a text string// using different regular expressions.PROCEDURE MainLOCAL cRegEx := "[A-Z0-9._%-]+@[A-Z0-9.-]+\.[A-Z]{2,4}"LOCAL cText := "Send your request to info@xharbour.com " + ;"for more information"LOCAL aResult, cEmailCLS? "----- words in text -----"aResult := HB_RegExSplit( " ", cText )AEval( aResult, {|c| QOut© } )cEmail := HB_AtX( cRegEx, cText, .F. )?? "----- email address -----"? cEMailaResult := HB_RegExSplit( "[.@]", cEMail )?? "----- email components --"AEval( aResult, {|c| QOut© } )** Output// ----- words in text -----// Send// your// request// to// info@xharbour.com// for// more// information//// ----- email address -----// info@xharbour.com//// ----- email components --// info// xharbour// comRETURN Quote Link to comment Share on other sites More sharing options...
kapiaba Posted September 12, 2013 Author Report Share Posted September 12, 2013 Valeu, vou testar. Thank you. Quote Link to comment Share on other sites More sharing options...
Erciley Junior Posted September 12, 2013 Report Share Posted September 12, 2013 Apenas para explicar como funciona e ilustrar o que foi falado: (se eu falar alguma besteira me corrijam) LOCAL cRegEx := "([0-9]{4})[-/]([0-9]{1,2})[-/]([0-9]{1,2})" LOCAL aDates := { "2006-9-28", ; "2006/10/1", ; "2006-123-1" } O que significa essa expressão regular (variável cRegEx) ? Vamos desmembrar a danada pra facilitar a leitura: ([0-9]{4}) = Condição 01 - Procure caracteres de 0 a 9, pegando 4 caracteres [-/] = Condição 02 - Procure o caracter - ou / ([0-9]{1,2}) = Condição 03 - Procure caracteres de 0 a 9, pegando 1 ou 2 caracteres [-/] = Condição 04 - Procure o caracter - ou / ([0-9]{1,2}) = Condição 05 - Procure caracteres de 0 a 9, pegando 1 ou 2 caracteres Vale lembrar que a expressão regular faz um AND, ou seja, se na string informada, alguma CONDIÇÃO não for satisfeita, não irá retornar, é o caso do terceiro elemento do vetor aDates. Testem no MySQL para entender melhor (mysql retorna 1 se a expressão for satisfeita, e 0 caso contrário): SELECT "2006-9-28" REGEXP "([0-9]{4})[-/]([0-9]{1,2})[-/]([0-9]{1,2})"; SELECT "2006/10/1" REGEXP "([0-9]{4})[-/]([0-9]{1,2})[-/]([0-9]{1,2})"; SELECT "2006-123-1" REGEXP "([0-9]{4})[-/]([0-9]{1,2})[-/]([0-9]{1,2})"; Quote Link to comment Share on other sites More sharing options...
emotta Posted September 12, 2013 Report Share Posted September 12, 2013 Muito bom, não sabia que dava pra usar direto no banco de dados. Vi que em SQL SERVER também da certo. Vou implementrar nos sistemas aqui para desconsiderar acentuação nas pesquisas com SELECT direto. Vlwww Apenas para explicar como funciona e ilustrar o que foi falado: (se eu falar alguma besteira me corrijam) LOCAL cRegEx := "([0-9]{4})[-/]([0-9]{1,2})[-/]([0-9]{1,2})" LOCAL aDates := { "2006-9-28", ; "2006/10/1", ; "2006-123-1" } O que significa essa expressão regular (variável cRegEx) ? Vamos desmembrar a danada pra facilitar a leitura: ([0-9]{4}) = Condição 01 - Procure caracteres de 0 a 9, pegando 4 caracteres [-/] = Condição 02 - Procure o caracter - ou / ([0-9]{1,2}) = Condição 03 - Procure caracteres de 0 a 9, pegando 1 ou 2 caracteres [-/] = Condição 04 - Procure o caracter - ou / ([0-9]{1,2}) = Condição 05 - Procure caracteres de 0 a 9, pegando 1 ou 2 caracteres Vale lembrar que a expressão regular faz um AND, ou seja, se na string informada, alguma CONDIÇÃO não for satisfeita, não irá retornar, é o caso do terceiro elemento do vetor aDates. Testem no MySQL para entender melhor (mysql retorna 1 se a expressão for satisfeita, e 0 caso contrário): SELECT "2006-9-28" REGEXP "([0-9]{4})[-/]([0-9]{1,2})[-/]([0-9]{1,2})"; SELECT "2006/10/1" REGEXP "([0-9]{4})[-/]([0-9]{1,2})[-/]([0-9]{1,2})"; SELECT "2006-123-1" REGEXP "([0-9]{4})[-/]([0-9]{1,2})[-/]([0-9]{1,2})"; Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.