Quebrar String para Array!

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

nome=Roberto,email=robertao@teste.com;nome=Joao,email=joao@email.com;

Para apresentar ao usuário assim:

Usuários cadastrados: 2

Usuário 1
Nome: Roberto
E-mail: robertao@teste.com

Usuário 2
Nome: Joao
E-mail: joao@email.com

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.

tente primeiro quebrar por “;”… aí vc tem a quantidade de usuários;
depois quebre por “,” para separar os atributos;
e aí quebre por “=” para identificar o nome e valor de cada atributo

Eu quebro elas, e deixo separadas?

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

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();
}

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.

Utilize o StringTokenizer…

Manja?

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:

Dá pra fazer algo assim com StringTokenizer…

public class Tokens {
	public static void main(final String[] args) {
		String mensagem = "nome=Roberto,email=robertao@teste.com;nome=Joao,email=joao@email.com;";
		
		
		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…

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

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

[quote=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 :
[/quote]

[code]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]);

}[/code]

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

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

Funcionou

Um grande abraço!