quimera 13 Denunciar post Postado Julho 4, 2017 38 minutos atrás, Pita disse: 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) isso vai depender de onde ele recebe o cep, tem serviços que não usam o traço, e outra Não seria mais prático/fácil adicionar dois espaços antes e depois do traço variavel.split(" - ");//Divide somente pelo traço que tem 2 espaços (cada um de um lado) Compartilhar este post Link para o post Compartilhar em outros sites
vinifonseca1618 2 Denunciar post Postado Julho 4, 2017 Tenta o seguinte, usando regex: function trataEndereco(endereco) { var p1 = "", p2 = "" endereco = endereco.replace(/^\w+/i, function(match) { p1 = match; return "" }) endereco = endereco.replace(/\-\s(.*)?$/, function(match) { p2 = match; return "" }) return [ p1, endereco.trim(), p2 ] } Só passar o endereço para esta função, que ela retorna um array com as partes que você quer Compartilhar este post Link para o post Compartilhar em outros sites
Pita 53 Denunciar post Postado Julho 4, 2017 4 horas atrás, quimera disse: isso vai depender de onde ele recebe o cep, tem serviços que não usam o traço, e outra Não seria mais prático/fácil adicionar dois espaços antes e depois do traço variavel.split(" - ");//Divide somente pelo traço que tem 2 espaços (cada um de um lado) Eu acho o seguinte, o problema não esta no javascript e sim no formato dos dados, acredito que antes de pensar em programar você deveria pensar na normalização da informação. Se você pode pedir para o pessoal enviar os dados separados por " - " (com o espaço), então acredito que você esteja trabalhando no layout desta formatação, então porque não pede os dados no formato JSON? Como falei, enquanto não definir o layout acredito nem iniciar a desenvolver porque sempre existirá as exceções, ou o endereço com um traço no meio, ou o CEP que não está formatado, ou alguma outra coisa. Define o layout primeiro Compartilhar este post Link para o post Compartilhar em outros sites
vinifonseca1618 2 Denunciar post Postado Julho 4, 2017 1 hora atrás, Pita disse: Eu acho o seguinte, o problema não esta no javascript e sim no formato dos dados, acredito que antes de pensar em programar você deveria pensar na normalização da informação. Se você pode pedir para o pessoal enviar os dados separados por " - " (com o espaço), então acredito que você esteja trabalhando no layout desta formatação, então porque não pede os dados no formato JSON? Como falei, enquanto não definir o layout acredito nem iniciar a desenvolver porque sempre existirá as exceções, ou o endereço com um traço no meio, ou o CEP que não está formatado, ou alguma outra coisa. Define o layout primeiro Não, na verdade ele errou ao dizer que o endereço vem naquele formato. Se você der um GET na URL "http://apps.widenet.com.br/busca-cep/api/cep.json?code=0512", veja que a API retorna um JSON estruturado. Não tem necessidade de tratar a resposta (no caso, se for bem sucedida). Compartilhar este post Link para o post Compartilhar em outros sites
Thiago Mascarenhas 0 Denunciar post Postado Julho 4, 2017 21 minutos atrás, vinifonseca1618 disse: Não, na verdade ele errou ao dizer que o endereço vem naquele formato. Se você der um GET na URL "http://apps.widenet.com.br/busca-cep/api/cep.json?code=0512", veja que a API retorna um JSON estruturado. Não tem necessidade de tratar a resposta (no caso, se for bem sucedida). Na verdade não errei, alguns CEP's vem com um erro na informação, o padrão que retona nesta consulta é {"status":1,"code":"05120-000","state":"SP","city":"S\u00e3o Paulo","district":"Parque Anhang\u00fcera","address":"Avenida Manoel Domingos Pinto"} as informações estão separadas sim, você viu isso corretamente, agora quando olhamos o campo address temos "Avenida Manoel Domingos Pinto" esse é o endereço, porem o AVENIDA em muitos sistemas (e no que estou trabalhando) é um dado separado pois ele é o tipo de endereço (avenida, rua, travessa... ) por isso a necessidade de separar. em relação ao traço, o que ocorre é que algumas consultas retornam "Avenida Manoel Domingos Pinto - 6512 a 2356" que acredito que se refira a faixa de endereços, não tenho certeza. 2 horas atrás, Pita disse: Eu acho o seguinte, o problema não esta no javascript e sim no formato dos dados, acredito que antes de pensar em programar você deveria pensar na normalização da informação. Se você pode pedir para o pessoal enviar os dados separados por " - " (com o espaço), então acredito que você esteja trabalhando no layout desta formatação, então porque não pede os dados no formato JSON? Como falei, enquanto não definir o layout acredito nem iniciar a desenvolver porque sempre existirá as exceções, ou o endereço com um traço no meio, ou o CEP que não está formatado, ou alguma outra coisa. Define o layout primeiro Concordo com você Pita, o formato dos dados é muito importante e deve ser definido antes de se começar a programar, as infelizmente nem sempre o recebemos no formato que desejamos ou o mais correto, e este é um caso em que não tenho acesso ao formato dos dados, so o retorno a uma consulta que será integrada no que estou desenvolvendo. Compartilhar este post Link para o post Compartilhar em outros sites
Thiago Mascarenhas 0 Denunciar post Postado Julho 4, 2017 Gente obrigado a todos, cheguei a um resultado que atendeu. vou postar aqui a baixo caso passe pelo mesmo problema. <head> <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"></script> </head> <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; } //Seperando a string var spl = result.address.split("-"); // Separa em duas var antesDoTraco = spl[0]; var separaAntesdoTraco = antesDoTraco.split(" ") //Separa tudo var strTamanho = separaAntesdoTraco.length; var strNovoEndereco = ""; for(var i = 1; i < strTamanho; i++) { strNovoEndereco += separaAntesdoTraco+" "; // Junta em um novo endereço sem a informação da posição [0], pois ela é o TIPO DE ENDEREÇO } $("input#cep").val( result.code ); $("input#estado").val( result.state ); $("input#cidade").val( result.city ); $("input#bairro").val( result.district ); $("input#tipoEndereco").val(result.address.split(' ')[0]); // Pega somente a posição [0] do vetor - TIPO DE ENDEREÇO $("input#endereco").val( result.address ); $("input#novoEndereco").val( strNovoEndereco ); $("input#estado").val( result.state ); }); }); }); </script> <form action="checkout-sample" method="POST"> <p>CEP <input type="text" name="cep" id="cep" /> </p> <p> Estado <input type="text" name="estado" id="estado" /> </p> <p>Cidade <input type="text" name="cidade" id="cidade" /> </p> <p>Bairro <input type="text" name="bairro" id="bairro" /> </p> <p>Tipo Endereço <input type="text" name="tipoEndereco" id="tipoEndereco" /> </p> <p>Endereço <input type="text" name="endereco" id="endereco" /> </p> <p>Novo Endereço <input type="text" name="novoEndereco" id="novoEndereco" /> </p> Eu deixei o campo endereço para poderem visualizar o que muda após o tratamento. Compartilhar este post Link para o post Compartilhar em outros sites
Thiago Mascarenhas 0 Denunciar post Postado Julho 4, 2017 Um exemplo de retorno como o que eu falei http://apps.widenet.com.br/busca-cep/api/cep.json?code=66083-340 {"status":1,"code":"66083-340","state":"PA","city":"Bel\u00e9m","district":"Pedreira","address":"Travessa Humait\u00e1 - at\u00e9 1072"} Endereço: Travessa Humaitá - até 1072 Ai trato a informação, e fico com: Tipo endereço: Travessa Endereço: Humaitá a parte " - até 1072" não deveria existir pois não faz parte do endereço. Por isso é desconsiderada. Compartilhar este post Link para o post Compartilhar em outros sites