Quebrar String para Array!

11 respostas
chocobola

Bom dia pessoal, seguinte, tenho que quebrar uma string do tipo:

nome=Roberto,email=[email removido];nome=Joao,email=[email removido];

Para apresentar ao usuário assim:

Usuários cadastrados: 2

Usuário 1
Nome: Roberto
E-mail: [email removido]

Usuário 2
Nome: Joao
E-mail: [email removido]

Só que é o seguinte, não sei como funciona, se existe alguma forma de “concatenar” os splits, pois como eu percebo, tenho que quebrar por: “=” “,” e “;”

String sentenca = in.nextLine();
	String quebra1[] = sentenca.split(";");

Assim eu quebro ela na metade, ou usando os outros quebra nas outras posições, e não estou conseguindo resolver…

Eu até tentei quebrar a array já quebrada, mas também não imagino como fazer…

Alguma luz?

Obrigado.

11 Respostas

erico_kl
tente primeiro quebrar por ;”…  vc tem a quantidade de usuários;

depois quebre por , para separar os atributos;

e  quebre por = para identificar o nome e valor de cada atributo
chocobola

Eu quebro elas, e deixo separadas?

Ou tento quebrar novamente o que ja foi quebrado? Nossa, deu um nó! Hahaha… Obrigado

E

Escreva um método (que costumo chamar de “join” porque “join” é o contrário de “split”) que junte as coisas do jeito que você quer. Um exemplo:

public static String join (String[] partes, String separador) {
    StringBuilder sb = new StringBuilder();
    if (partes.length >= 1) {
        sb.append (partes[0]);
        for (int i = 1; i < partes.length; ++i) {
            sb.append (separador);
            sb.append (partes[i]);
        }
    }
    return sb.toString();
}
E

Tou vendo que seu problema é saber como quebrar um problema em partes (mais conhecido como “método do Jack o Estripador”).

Divida o problema em partes pequenas, e vá resolvendo uma parte de cada vez.

L

Utilize o StringTokenizer…

Manja?

chocobola

Não conheço, poderia pesquisar até, mas o professor que pediu não falou nada sobre, então acredito que tenha que ser feito “diferente”, ou não? hahaha :frowning:

L

Dá pra fazer algo assim com StringTokenizer…

public class Tokens {
	public static void main(final String[] args) {
		String mensagem = "nome=Roberto,email=[email removido];nome=Joao,email=[email removido];";
		
		
		StringTokenizer token = new StringTokenizer(mensagem, ";");
		
		System.out.println("Usuários cadastrados: " + token.countTokens());
		
		while(token.hasMoreTokens()) {
			String local = token.nextToken();
			
			System.out.println(local);
		}

	}

}

Sua aula é sobre o que? Isto que estou lhe mostrando é nativo do Java… talvez vc tenha que fazer isto na mão mesmo…percorrendo o array…usando split…
Se for quebrando a String, vc tem usar o split 2 vezes…1 pra separar em pedaços por “;” e outra para separar por “,”…vai depender do que o seu professor pediu…

chocobola

Aula é de Orientação a Objetos I, eu não to entendendo como quebrar várias vezes com o split, pois após quebrar a primeira vez, ele vira um array e ai não funciona mais :\

thiagoteixeiraoficia

Conforme o Leo disse utilize o StringTokenizer, quando for fazer a impressão conforme a linha 13 do código do Léo, utilize o replace substituindo “,” por quebra de linha.

Segue abaixo código.

System.out.println(local.replace(",", "\n"));

Abrs

douglaskd
chocobola:
Aula é de Orientação a Objetos I, eu não to entendendo como quebrar várias vezes com o split, pois após quebrar a primeira vez, ele vira um array e ai não funciona mais :\
for(int i=0;i<quebra1.lenght;i++){

String QuebraNome[] = quebra1[i].split(","); //resultado: [nome=Roberto][email=robertao] 
String nome[] = QuebraNome[1].split("="); //resultado: [nome][Roberto]

System.out.println("Nome:",nome[1]); 

}

agora vc faz em baixo do nome[] pra pegar o e-mail

chocobola

Valeu douglas, era isso mesmo que eu precisava entender… :slight_smile:

Funcionou

Um grande abraço!

Criado 15 de agosto de 2012
Ultima resposta 15 de ago. de 2012
Respostas 11
Participantes 6