Ir para conteúdo

Arquivado

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

Thiago Mascarenhas

Separando e exibindo string

Recommended Posts

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

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
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
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
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

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

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

×

Informação importante

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