Re:Separador String

String txt = "Sua.String.Aqui"; String[] pedacos = txt.split("\\.");

Amigo, não sei se existe algo pronto na API ou em outro lugar ou outra maneira mais fácil de resolver a pendenga, mas fiz esse código abaixo funcionar na munheca.

	public String getCodigoFmt(){
		String retorno = "";
		for (int i = 0; i < codigo.length(); i++){
			retorno += codigo.charAt(i);
			if (((i + 1) % 4 == 0) && (i <= 16)){
				retorno += "-";
			}
		}
		return retorno;
	}

Utilize o método split(). Exemplo:

String str = "Bom dia.Meu nome é Felipe!";
		
String[] split = str.split("\\.");
		
for (int i = 0; i < split.length; i++) {
    System.out.println(split[i]);
}

Percebeu que eu utilizei “\.” ao invés de “.” como argumento do método? Fiz isso porque o método aceita uma expresão regular como parâmetro.

[quote=celso.martins] public String getCodigoFmt(){ String retorno = ""; for (int i = 0; i < codigo.length(); i++){ retorno += codigo.charAt(i); if (((i + 1) % 4 == 0) && (i <= 16)){ retorno += "-"; } } return retorno; } [/quote]

Hããã??? :?

Ou, faz um mix de str.indexOf com str.substring…

[quote=danieldestro][quote=celso.martins] public String getCodigoFmt(){ String retorno = ""; for (int i = 0; i < codigo.length(); i++){ retorno += codigo.charAt(i); if (((i + 1) % 4 == 0) && (i <= 16)){ retorno += "-"; } } return retorno; } [/quote]

Hããã??? :? [/quote]

Acho que entendi errado a dúvida do amigo. =)
Quando eu cliquei em responder, ninguém havia respondido. Depois que a mensagem foi, vi a sua. Aí vi que viajei.

Mas se a sua surpresa foi devido à codificação, sou todo ouvidos… ops… olhos. =)

Abraços

Por curiosidade executei o seu código com a variável “codigo” contendo o texto indicado na primeira mensagem deste post, e ele imprimiu:

“100–Mund-o Ja-va.1-01-Grupo de usuários Java.102-Fulano de tal”

Por curiosidade executei o seu código com a variável “codigo” contendo o texto indicado na primeira mensagem deste post, e ele imprimiu:

“100–Mund-o Ja-va.1-01-Grupo de usuários Java.102-Fulano de tal”[/quote]

Aqui, uso isso para separar um código, gerado para cartões pré-pagos, em 5 grupos de 4 caracteres. Assim:

QBVYNLFHFOMXT2YNZC1M

dá esse resultado:

QBVY-NLFH-FOMX-T2YN-ZC1M

Pelo menos no meu Tomcat. =)

Abraços

Agora sim você foi mais específico. Poderia ter economizado tempo se falasse no começo, né?
Uma simples busca no Google por: j2me split string traz:

http://forum.java.sun.com/thread.jspa?threadID=646861&messageID=3809007
http://www.devmedia.com.br/articles/viewcomp.asp?comp=6289&hl=

[quote=diogoroos]Pessoa, obrigado pelas dias.
Para ser mais específico, preciso separar essa frase em uma aplicação J2ME e a classe String do J2ME não tem a função split.

Existe outras alterantivas além destas ?

Valeu[/quote]

Amigo, pense num algorítmo utilizando a silução do rodrigoallemand.

Me parece a melhor opção para o seu caso.

Abraços!

PS. Ou a que o Destro acabou de postar. Tá demais isso hoje, hein Daniel? =)

Me mexo para postar e quando vejo tem uma msg sua. =)

boas pessoal.
como ainda programo a pouco estou com umas duvidas…

eu queria fazer uma funçao que recebe uma string e que retorna uma string com parte dessa string e que na original fique somente o resto.
eu dou um exemplo para me explicar melhor

exemplo recebo uma string mensagem = “1|aaa|1|bbb bbb|2|ccc ccc|3|ddd”

e quero que a funçao me retorne uma string mensagem1 = “1|aaa|1|bbb bbb”, uma string mensagem2 = “2|ccc ccc” e depois queria que na string mensagem ficasse somente: mensagem = “3|ddd”

sera que alguem me pode ajudar…
agradecia muito

[quote=gonzas.mts]boas pessoal.
como ainda programo a pouco estou com umas duvidas…

eu queria fazer uma funçao que recebe uma string e que retorna uma string com parte dessa string e que na original fique somente o resto.
eu dou um exemplo para me explicar melhor

exemplo recebo uma string mensagem = “1|aaa|1|bbb bbb|2|ccc ccc|3|ddd”

e quero que a funçao me retorne uma string mensagem1 = “1|aaa|1|bbb bbb”, uma string mensagem2 = “2|ccc ccc” e depois queria que na string mensagem ficasse somente: mensagem = “3|ddd”

sera que alguem me pode ajudar…
agradecia muito[/quote]

Porque não:

mensagem1 = mensagem.substring(x,y);
mensagem2 = mensagem.substring(w,z);
mensagem = mensagem.substring(m);
?

onde x,y,w,z e m são as posições das substrings que você quer capturar.

Lembre-se que se você somente quer definir o ponto de “corte” inicial e “ir” até o final da String (como é o caso do teu resto em mensagem), você só precisa definir o ponto inicial.

Dê uma olhada na API do Java

Abraços!

Bem, dei uma refatorada no método, para ficar mais automatizado. Joguei numa classe utilitária que tenho para Strings.

Como tem a ver com o assunto, resolvi postar aqui.

Não encontrei nada que fizesse isso na API do Java. Se alguém souber, pode dizer, não me aborreço. =)

O bom de fazer métodos utilitários é o treinamento.

	public static String addToken(String entrada, String token, int intervalo){
		String retorno = "";
		for (int i = 0; i < entrada.length(); i++){
			retorno += entrada.charAt(i);
			if (((i + 1) % intervalo == 0) && ((i + 1) != entrada.length())){
				retorno += token;
			}
		}
		return retorno;
	}

Não encontrei nada melhor, para resolver a questão desse algorítmo colocar um token no final da String, que ((i + 1) != entrada.length())

Pensei nesse código:

		if (retorno.endsWith(token)){
			retorno = retorno.substring(0, retorno.length() - 1);
		}

Mas me pareceu uma gambiarra terrível.

Abraços

sim dessa maneira esta correcto…
mas na realidade eu nao sei essas posiçoes pois as mensagens podem ter varias dimençoes.
eu nao sei o real tamanho disso.

sera que e possivel fazer o que quero. ou sera que estou a pensar alto de mais…

Então cara vou te passar +1 exemplo com posições fixas para quebrar sua string:

[code]private String retornaString(String mensagem)
{

String mensagem1 = “”;
String mensagem2 ="";
String mensagem3="";

for(int i = 0 ;i< mensagem.length();i++)
{

if(i<14)
  mensagem1+=mensagem.substring(i,i+1);
else if(i>14&&i<24)
 mensagem2+=mensagem.substring(i,i+1);
else if(i>24)
 mensagem3+=mensagem.substring(i,i+1);

}

return ("String original: “+mensagem+” Parte 1: “+mensagem1+” Parte 2: “+mensagem2+” Parte 3: "+mensagem3);
}[/code]

Cara não testei o código não…to no trampo…ta osso…
Só lembrando que o método split que quebra a string em um vetor de strings é bem mais facil de utilizar…
flw []'s

Pessoal,

Vocês sabem como separar uma string sem usar o StringTokenizer ?
P. Ex: String texto = "100-Mundo Java.101-Grupo de usuários Java.102-Fulano de tal"
Eu gostaria de separar pelo “.” criando uma nova String e jogando essa String (frase completa separada pelo “.”) em um Vetor.
Tem como ?

Valeu!!

Pessoal, obrigado pelas dicas.
Para ser mais específico, preciso separar essa frase em uma aplicação J2ME e a classe String do J2ME não tem a função split.

Existem outras alterantivas além destas ?

Valeu

[quote=danieldestro]Agora sim você foi mais específico. Poderia ter economizado tempo se falasse no começo, né?
Uma simples busca no Google por: j2me split string traz:

http://forum.java.sun.com/thread.jspa?threadID=646861&messageID=3809007

Pode ser!
Eu também encontrei uma classe StringTokenizer para J2ME que tem basicamente a mesma função do J2SE.
Está em: http://escience.anu.edu.au/project/05S1/JiXu/Palm%20Source%20Code/StringTokenizer.java

Obrigado!
Diogo Roos