Re:Separador String

17 respostas
danieldestro

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

17 Respostas

celso.martins

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;
	}
felipealbuquerque

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.

danieldestro

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

Hããã??? :?

rodrigoallemand

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

celso.martins

danieldestro:
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; }

Hããã??? :?

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

danieldestro

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”

celso.martins

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”

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

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
http://www.devmedia.com.br/articles/viewcomp.asp?comp=6289&hl=

celso.martins

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

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. =)

G

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

celso.martins

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

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!

celso.martins

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

G

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…

B
Então cara vou te passar +1 exemplo com posições fixas para quebrar sua string:
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);
}

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

D

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

D

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

D

[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

Criado 29 de novembro de 2007
Ultima resposta 29 de nov. de 2007
Respostas 17
Participantes 7