Inserindo hífen no CEP

18 respostas
JorjaoCorreia

iae galera =)))

é o seguinte, eu preciso que a pessoa digite o CEP sem hifen, e que o aplicativo insira um hifen no local certo depois que a pessoa digite o CEP e aperte enter:

import java.util.Scanner;
import java.io.PrintStream;

public class Exercicio0501 {

public static void main (String[] args) {

Scanner sc = new Scanner (System.in);

PrintStream ps = System.out;
ps.print("\nDigite o seu CEP (Somente números):\t");
	String CEP = sc.nextLine();
	ps.println("CEP Formado:\t" + [b]eu nao sei qual função uso aqui[/b] );
}

}

eu precisava saber qual função eu preciso usar ali após o + pra inserir o hifen após os 5 digitos.

Obrigado :smiley:

18 Respostas

T

Use o método substring e as concatenações de strings ("+"). A idéia é você pegar os 5 primeiros caracteres, concatená-los com “-”, e a seguir pegar os próximos 3 caracteres.

Lavieri

CEP.substring(0,5) + “-” + CEP.substring(5);

JorjaoCorreia

thingol, Lavieri brigadao =))

Lavieri deu certinho cara mais eu nao intendi o pq do (0,5) no primeiro substring :?

Marky.Vasconcelos

substring da 0° posição até a 5°

JorjaoCorreia

Mark_Ameba
vlws cara =))
é que tenho outro exercicio parecido pra fazer
huieahwehiawea

rodpuc

só uma pequena correção, o correto é:
a partir da posição 0°, pega 5 caracteres…

observe q da posição 0°até a 5°há 6 caracteres, diferente do prefixo de um cep.

portanto o primeiro parâmetro é posição e o segundo é quantidade

T

Aham - o primeiro parâmetro é “posição de (inclusive)” e o segundo é “posição até (exclusive)”; não é quantidade não.

O que o Mark Ameba disse está correto, se ele dissesse:

rodpuc

ctza? eu sempre considerei o segundo parâmetro como qtd… n vejo mto sentido em considerar uma posição “exclusive”. Posso estar errado sim, mas tem ctza de q eh isso?

rodpuc

atualizando, chequei na documentação da API e de fato oq o thingol disse está correto:

Parameters:
beginIndex - the beginning index, inclusive.
endIndex - the ending index, exclusive.

continuo achando estranho isso :slight_smile: mas de fato é o correto.
Peço desculpas pela informação errada e fico feliz e agradecido por ter aprendido mais essa :thumbup:

J

não seria mais facil utilizar uma mascara??

T

É mais fácil sim, mas qual é a API do Java que aceita tais máscaras? Eu gostaria que houvesse um método que fosse mais ou menos assim:

transform (string, “ABCDEFGH”, “ABCDE-FGH”)

Se quiser escrever um, esteja à vontade.

(O problema do Jorjão não aceita que você usar MaskFormatter e JFormattedTextField, se é o que você está pensando. Ele quer algo mais simples.)

JorjaoCorreia

Era isso msm thingol, eu queria algo mais simples msm
vlws ai galera pela ajuda xD
agora to com outro problema parecido :?

import java.util.Scanner;
import java.io.PrintStream;

public class Exercicio0503 {

public static void main (String[] args) {

Scanner sc = new Scanner (System.in);

PrintStream ps = System.out;
ps.print("\nInforme seu CPF (só números):\t");
	String CPF = sc.nextLine();
	
	ps.println("CPF formatado:\t" + 
			CPF.substring(0,3) + "." + CPF.substring(3) +
			CPF.substring(4,6) + "." + CPF.substring(6) +
			CPF.substring(7,9) + "-" + CPF.substring(9));
}

}

Eu acho que estou colocando as posições erradas os pontos não saem nos lugares certos =x
eu preciso que a pessoa digite somente os numeros do CPF e que ele saia formatado com os pontos e o hífen
o resultado que sai no “CPF formatado” é: 857.[telefone removido].5214721-47
eu ja mudei as posições de tudo quanto é jeito e nao deu certo ;x
alguem sabe onde ta o erro? ;x

Marky.Vasconcelos

O método substring com um unico argumento é a mesma coisa que o substring do valor até o final da palavra

String s = "0123";
System.out.println(s.substring(1,2));//imprime "12"
System.out.println(s.substring(1,s.length()));//imprime "123"
System.out.println(s.substring(1));//imprime "123"

Se voce quer que apareça apenas uma letra use o charAt

String abc = "abcdef";
String b = String.valueOf(abc.charAt(1));
JorjaoCorreia

ainda nao consegui cara, eu estou mudando os valores ali mais a formatação nao fica correta ;x

Lavieri

seu erro ta aki

ps.println("CPF formatado:\t" + CPF.substring(0,3) + "." + CPF.substring(3) + CPF.substring(4,6) + "." + CPF.substring(6) + CPF.substring(7,9) + "-" + CPF.substring(9));

suponha que vc tenha um CPF assim… [telefone removido]

CPF.substring(0,3) + "." + CPF.substring(3) + => 012 + "." + 34567890

e assim por diante…

quando vc poem… CPF.substring(0,3) … vc pega da posicião incial, 0 … ate a 3 (excluindo a 3°) ou seja… 012

CPF.substring(0,3) + "." + //012. CPF.substring(3,6) + "." + //345. CPF.substring(6,9) + "-" + //678- CPF.substring(9); //90 .... pois aqui inicia na posição 9 ate o final... //formando o CPF => [CPF removido]

espero que agora vc tenha entendido como funciona o substring

JorjaoCorreia

valewssss cara
agora deu certinho, consegui intender =))
flwss
:smiley:

Jean_Passos

Ei cara…

tenta esse código:

import java.util.Scanner;
import java.io.PrintStream;

public class Teste{
public static void main (String[] args) {

Scanner sc = new Scanner (System.in); 
	PrintStream ps = System.out; 
	
	ps.print("\nDigite o seu CPF (Somente números):\t"); 
	String CEP = sc.nextLine(); 
	ps.println("CEP Formado:\t" + 
		CEP.substring(0,3) + "." + 
			CEP.substring(3,6)+ "." + 
				CEP.substring(6,9)+ "-" + 
					CEP.substring(9,11)); 

}

}

M

E se no caso eu quisesse remover o hífen do Cep?

Criado 7 de abril de 2009
Ultima resposta 14 de jun. de 2013
Respostas 18
Participantes 8