Thiago Mascarenhas 0 Denunciar post Postado Junho 26, 2017 Bom dia gente estou com um problema por aqui e gostaria da ajuda de vocês, estou usando uma API para consultar informações sobre o CEP, porém preciso separar uma informações antes de exibi-las em campos diferentes. Vou postar o código abaixo, ele funciona apos o usuário preencher o cep, pegando as informações e mostrando nos campos refentes do formulário. <script type="text/javascript"> jQuery(function($){ $("#cep").change(function(){ var cep_code = $(this).val(); if( cep_code.length <= 0 ) return; $.get("http://apps.widenet.com.br/busca-cep/api/cep.json", { code: cep_code }, function(result){ if( result.status!=1 ){ alert(result.message || "Houve um erro desconhecido"); return; } $("input#endereco").val( result.address ); }); }); }); </script> <form action="checkout-sample" method="POST"> CEP: <input type="text" name="cep" id="cep" /> Tipo de logradouro: <input type="text" name="tipoEndereco" id="tipoEndereco" /> Logradouro: <input type="text" name="endereco" id="endereco" /> </form> O que acontece é que o result.address retorna uma string no padrão "AAAA BBBB BBBBB BBB - CCCCC " e preciso exibir a primeira parte (AAAAA - Que sempre estará antes do primeiro espaço) no campo "tipoEndereco" e do restante retirar tudo que estiver após "-" exibindo no campo endereço somente a parte "BBBB BBBB BBBB" Compartilhar este post Link para o post Compartilhar em outros sites
quimera 13 Denunciar post Postado Junho 26, 2017 você pode separar usando o split var spl = result.address.split(' '); var CEP = spl[0]; console.log(CEP); Compartilhar este post Link para o post Compartilhar em outros sites
Thiago Mascarenhas 0 Denunciar post Postado Junho 26, 2017 Quimera, a função split possui algum parâmetro que indique que a string só deve ser dividida em duas partes? Compartilhar este post Link para o post Compartilhar em outros sites
quimera 13 Denunciar post Postado Junho 26, 2017 o espaço -> (" ") https://www.w3schools.com/jsref/jsref_split.asp https://developer.mozilla.org/pt-BR/docs/Web/JavaScript/Reference/Global_Objects/String/split var str = "How are you doing today?"; var res = str.split(" "); res[0]; //bom aqui agora vão ter todos as palavras separadas pelo espaço, divididas em array (0,1,2,3,4 e 5) //para este exemplo em questão pegamos a chave 0(zero) que é a primeira palavra "How" console.log(res[0]); Compartilhar este post Link para o post Compartilhar em outros sites
Thiago Mascarenhas 0 Denunciar post Postado Junho 26, 2017 Sim sim, , + meu problema e que preciso pegar somente a primeira palavra antes do " " e separar novamente o que sobrar, pegando somente o que estiver antes do "-" Compartilhar este post Link para o post Compartilhar em outros sites
quimera 13 Denunciar post Postado Junho 26, 2017 31 minutos atrás, Thiago Mascarenhas disse: Sim sim, , + meu problema e que preciso pegar somente a primeira palavra antes do " " e separar novamente o que sobrar, pegando somente o que estiver antes do "-" Caro colega, você testou o código que lhe enviei? a parte: var CEP = spl[0];//aqui é justamente o que você quer (o AAAAA) Compartilhar este post Link para o post Compartilhar em outros sites
quimera 13 Denunciar post Postado Junho 26, 2017 $("input#endereco").val( result.address.split(' ')[0] ); Compartilhar este post Link para o post Compartilhar em outros sites
Thiago Mascarenhas 0 Denunciar post Postado Junho 26, 2017 Oi, testei sim e até ai funcionou direitinho, deixa eu tentar me explicar melhor, alem dessa primeira parte (AAAA), preciso pegar o que sobra (BBBB BBBBB BBB - CCCCC) e ficar tb com um segundo bloco que seria o BBBB BBBBB BB. Ou seja da string inicial preciso pegar so a primeira palavra antes do espaço para um imput e para outro tudo que anteceder o ultimo "-", a minha dificuldade está exatamente ai, em pegar esse segundo bloco de informações. Compartilhar este post Link para o post Compartilhar em outros sites
quimera 13 Denunciar post Postado Junho 26, 2017 Citar 2 horas atrás, Thiago Mascarenhas disse: Oi, testei sim e até ai funcionou direitinho, deixa eu tentar me explicar melhor, alem dessa primeira parte (AAAA), preciso pegar o que sobra (BBBB BBBBB BBB - CCCCC) e ficar tb com um segundo bloco que seria o BBBB BBBBB BB. Ou seja da string inicial preciso pegar so a primeira palavra antes do espaço para um imput e para outro tudo que anteceder o ultimo "-", a minha dificuldade está exatamente ai, em pegar esse segundo bloco de informações. Mesmo processo //EXEMPLO: //AAAA BBBB CCC - DDDDD var spl = result.address.split(' '); var a = spl[0]; //AAAA var b = spl[1]; //BBBB var c = spl[2]; //CCC var d = spl[3]; //- var e = spl[4]; //DDDDD assim por diante Compartilhar este post Link para o post Compartilhar em outros sites
Thiago Mascarenhas 0 Denunciar post Postado Junho 27, 2017 Amigo, primeiramente obrigado pela sua disponibilidade em me ajudar. Seu exemplo esta funcionando perfeitamente, porém a minha dificuldade ainda persiste no fato de que, a primeira parte AAA é uma palavra unica então ela vai estar sempre no sp1[0] até ai não há problema. porém após ela virão varias palavras antes do separador "-". então o problema é que apos pegar o sp[0] para uma variavel, preciso pegar dos os vetores (que podem ser 1,2,3, 4,....) que venha antes do caracter "-". o meu problema é justamente esse como isolar esse bloco de informações. Ilustrando no seu exemplo seria isso : campo1 = spl[0]; //AAAA campo2 = spl[1]; spl[2];...... //BBBB CCC - Porém como falei essa quantidade antes do "-" é variavel. novamente, obrigado pela ajuda. Compartilhar este post Link para o post Compartilhar em outros sites
quimera 13 Denunciar post Postado Junho 27, 2017 você pode separar a string pelo "-" (traço) var spl = result.address.split('-'); Bom agora você tem um array com duas chaves var string = "AAAA BBBB CCCC DDDD - EEE"; var spl = string.split("-");//dividindo a string em 2 partes var antesDoTraco = spl[0];//antes do traço (AAAA BBBB CCCC DDDD) var depoisdoTraco = spl[1];//depois do traço (EEE) var separacao = antesDoTraco.split(" ");//agora dividindo as palavras (AAAA, BBBB, CCCC, DDDD) separacao[0];//AAAA separacao[1];//BBBB separacao[2];//CCCC separacao[3];//DDDD Compartilhar este post Link para o post Compartilhar em outros sites
quimera 13 Denunciar post Postado Junho 27, 2017 3 horas atrás, Thiago Mascarenhas disse: Amigo, primeiramente obrigado pela sua disponibilidade em me ajudar. Seu exemplo esta funcionando perfeitamente, porém a minha dificuldade ainda persiste no fato de que, a primeira parte AAA é uma palavra unica então ela vai estar sempre no sp1[0] até ai não há problema. porém após ela virão varias palavras antes do separador "-". então o problema é que apos pegar o sp[0] para uma variavel, preciso pegar dos os vetores (que podem ser 1,2,3, 4,....) que venha antes do caracter "-". o meu problema é justamente esse como isolar esse bloco de informações. Ilustrando no seu exemplo seria isso : campo1 = spl[0]; //AAAA campo2 = spl[1]; spl[2];...... //BBBB CCC - Porém como falei essa quantidade antes do "-" é variavel. novamente, obrigado pela ajuda. JÁ VIU A RESPOSTA ACIMA? Compartilhar este post Link para o post Compartilhar em outros sites
Thiago Mascarenhas 0 Denunciar post Postado Junho 27, 2017 2 horas atrás, quimera disse: JÁ VIU A RESPOSTA ACIMA? Oi vi agora, mas como posso juntar as variáveis separacao[1];//BBBB separacao[2];//CCCC separacao[3];//DDDD e sendo que podem ter mais, pois o numero de vetores ira variar bastante. Um exmeplo real do retorno que recebo: Travessa Padre Eutíquio - de 674 o resultado final que preciso é v1 = Travessa v2 = Padre Eutíquio Mas como mencionei esta parte do "meio" varia em quantidade. Compartilhar este post Link para o post Compartilhar em outros sites
quimera 13 Denunciar post Postado Junho 28, 2017 véi, se você precisa só do que vem antes do traço,a resposta ja esta aí. pois o que você precisa é só esse trecho do código que enviei: var antesDoTraco = spl[0];//antes do traço (AAAA BBBB CCCC DDDD) Compartilhar este post Link para o post Compartilhar em outros sites
Thiago Mascarenhas 0 Denunciar post Postado Junho 29, 2017 Em 28/06/2017 at 00:21, quimera disse: véi, se você precisa só do que vem antes do traço,a resposta ja esta aí. pois o que você precisa é só esse trecho do código que enviei: var antesDoTraco = spl[0];//antes do traço (AAAA BBBB CCCC DDDD) Você não me entendeu totalmente, antes do traço é só parte do problema. Após tirar a parte antes do traço (como no exemplo que você postou acima), preciso separar novamente em SOMENTE DUAS PARTES para setar em uma campo. tendo como resultado var [0] AAAA var [1] BBBB CCCC DDDD Compartilhar este post Link para o post Compartilhar em outros sites
quimera 13 Denunciar post Postado Junho 30, 2017 11 horas atrás, Thiago Mascarenhas disse: Você não me entendeu totalmente, antes do traço é só parte do problema. Após tirar a parte antes do traço (como no exemplo que você postou acima), preciso separar novamente em SOMENTE DUAS PARTES para setar em uma campo. tendo como resultado var [0] AAAA var [1] BBBB CCCC DDDD você precisa dividir em duas partes mesmo que sejam 4 palavras? Fica complicado mesmo te ajudar. Compartilhar este post Link para o post Compartilhar em outros sites
Thiago Mascarenhas 0 Denunciar post Postado Junho 30, 2017 18 horas atrás, quimera disse: você precisa dividir em duas partes mesmo que sejam 4 palavras? Fica complicado mesmo te ajudar. isso mesmo, ai é o ponto onde complicou a vida, e para piorar nem sempre serão 4 palavras, podem ser mais... podem ser menos.... Mas valeu, te agradeço por ter tentado, obrigado. Compartilhar este post Link para o post Compartilhar em outros sites
Pita 53 Denunciar post Postado Julho 3, 2017 Cara, dá alguns exemplos de como virá a informação, assim fica mais fácil de entender, somente com "AAA BBB CCC - DDD" e que virão várias palavras fica muito abstrato Compartilhar este post Link para o post Compartilhar em outros sites
quimera 13 Denunciar post Postado Julho 3, 2017 21 horas atrás, Pita disse: Cara, dá alguns exemplos de como virá a informação, assim fica mais fácil de entender, somente com "AAA BBB CCC - DDD" e que virão várias palavras fica muito abstrato var string = "Rua Anita Ferraz, 144 Sé - 01505010"; //dividindo a string em 2 partes (dividindo pelo traço) var spl = string.split("-"); //antes do traço (Rua Anita Ferraz, 144 Sé) var antesDoTraco = spl[0]; //depois do traço (01505-010) var depoisdoTraco = spl[1]; //agora dividindo as palavras (Rua, Anita, Ferraz, 144, Sé) var separacao = antesDoTraco.split(" ");// (dividindo pelo espaço) separacao[0];//Rua separacao[1];//Anita separacao[2];//Ferraz separacao[3];//144 separacao[4];//Sé depoisdoTraco;//01505-010 Agora estou usando palavras e CEP... mais mastigado que isso só se eu engolir e cagar... Compartilhar este post Link para o post Compartilhar em outros sites
Pita 53 Denunciar post Postado Julho 4, 2017 Na verdade, se você começar dividindo por "-" no começo ele irá te retornar um arrai com 3 posições e não 2, porque o CEP tb tem um traço. Acho que o melhor neste caso é dividir por espaço e depois sair olhando cada posição do array retornado se tem um traço dentro e o tamanho tiver 9 caracteres, este é seu CEP, o resto é endereço Algo +/- assim: var strEnd = "Rua Anita Ferraz, 144 Sé - 01505-010"; var arrEndereco = strEnd.split(" ");// (dividindo pelo espaço) var iTamanho = arrEndereco.length; var strCEP = ""; var strEndereco = ""; for(var i = 0; i < iTamanho; i++){ if(arrEndereco[i].indexOf("-") >= 0 && arrEndereco[i].length == 9){ strCEP = arrEndereco[i]; }else{ strEndereco += arrEndereco[i]+" "; } } alert(strEndereco); alert(strCEP) Compartilhar este post Link para o post Compartilhar em outros sites