Percorrer String

Bom dia,

Necessito da ajuda de vocês para resolver a seguinte situação:

Eu tenho a string abaixo

“mensagem 1mensagem 2”

Preciso percorrer essa String e pegar os valores ‘mensagem 1’ e ‘mensagem 2’ e armazena-los em 2 variaveis distintas.

A lógica eu tenho, mas não sei como correr a string em J2ME

Eu valido o caracter assim texto.substring( start, i )

Mas não sei como ver o próximo

Aguardo sugestões!
Obrigado

Meu amigo não entendi muito bem a tua duvida, mas talvez isto te ajude:

public class GujHelp {

	public static void main(String[] args) {
	
		String s = "mgs1,msg2";
		String s1[] = null;
		for(int i = 0; i <= s.length(); i++){
			s1 = s.split(",");
			
		}

		System.out.println(s1[0]);
		System.out.println(s1[1]);
	}

}

[quote=jidlafe]Meu amigo não entendi muito bem a tua duvida, mas talvez isto te ajude:

public class GujHelp {

	public static void main(String[] args) {
	
		String s = "mgs1,msg2";
		String s1[] = null;
		for(int i = 0; i <= s.length(); i++){
			s1 = s.split(",");
			
		}

		System.out.println(s1[0]);
		System.out.println(s1[1]);
	}

}

[/quote]

obrigado pela resposta, mas eu tentei utilizar seu código e deu o erro abaixo:

The method split(String) is undefined for the type String

como faço para corrigi-lo??

obs. Você descreveu minha string assim: "mgs1,msg2"
Mas no meu caso é assim que eu recebo ela formatada: “mensagem 1mensagem 2”

Fico no aguardo!!
Espero mais ajudas!!!

Quanto ao método split eu acho que é a tua versão do JDK, atualize.

Tenha como base:

[code]package gujhelp;

public class GujHelp {

public static void main(String[] args) {

// String s = “mgs1,msg2”;
// String s1[] = null;
// for(int i = 0; i <= s.length(); i++){
// s1 = s.split(",");
//
// }
//
// System.out.println(s1[0]);
// System.out.println(s1[1]);

	String msg = "<inicio>mensagem 1<fim><inicio>mensagem 2<fim>";
	String aux1 = msg;
	
	int beginIndex = aux1.indexOf("o>");
	int endIndex = aux1.indexOf("<f");
	
	aux1 = aux1.substring(beginIndex += 2, endIndex);
	
	String aux2 = msg;
	
	beginIndex = aux2.lastIndexOf("o>");
	endIndex = aux2.lastIndexOf("<f");
	
	aux2 = aux2.substring(beginIndex += 2, endIndex);
	
	System.out.println(aux1);
	System.out.println(aux2);
	
}

}[/code]

Usando expressões regulares:

        String line="<inicio>mensagem 1<fim><inicio>mensagem 2<fim><inicio>mensagem 3<fim>";

        // Expressao para pegar sequencia: <inicio> "letras, numeros e espacos" <fim>:
        Pattern pat = Pattern.compile("(<inicio>((\\w|\\s)*)<fim>)", Pattern.DOTALL);
        Matcher mat = pat.matcher(line);

        while (mat.find()) {

          // metodo group retorna subgrupos de acordo com parenteses da expressao:
          System.out.println("Grupo value: " + mat.group(2));
          
          // metodos start e end retornam indices do resultado:
          System.out.println("Result value: " + line.substring(mat.start(), mat.end()));
        }          

Eu to loko ou esse tópico é de j2me mesmo…

Pra fazer gambiarra dá pra ir correndo letra a letra identificando padrões. Mas acho que a melhor opção ai é você trocar essa string estranha para XML.

jidlafe, eu uso JDK 6u13 (a mais recente que encontrei) e continua na mesma a sua sugestão (ela funciona em J2ME??)

ctdaa, tentei sua sugestão mas estou com erro com Pattern e Matcher (eles funcionam em J2ME??)

ricoldi, meu problema é com J2ME sim, mas então, eu recebo essas strings nesse formato ja. Como vc disse (e eu ja havia mencionado acima) minha intenção é tentar correr letra a letra, mas não sei como é a sintaxe em J2ME. Vc saberia me ajudar???

Agradeço a disponibilidade de todos

E continuo aguardando mais sugestões!!

O que tem em mente?
Faça um código veja o que dá, ai poste aqui pra gente poder ver…

*Por essas respostas acima que fiquei confuso…rs…

vixi… desculpe a mancada… não tem mesmo as classes Matcher e Pattern no JavaME. Ia sugerir Scanner… mas também não tem… que pobre!
Então acho que a melhor sugestão foi mesmo usar o XML, se voce conseguir mudar um pouco sua string para "mensagem 1mensagem 2, vai ficar fácil.
Se não der para mudar a string então o jeito é mesmo percorrer a string e ir guardando os caracteres, com este exemplo que também já foi sugerido (trocando o split pela lógica abaixo.), algo assim:

        String s="<inicio>mensagem 1<fim><inicio>mensagem 2<fim>";
        StringBuffer token = new StringBuffer;
        Boolean isMsg;
        for(int i = 0; i <= s.length(); i++){  
            token.append(s.charAt(i));
            if ( ! isMsg ) {
              if (token.toString().equals("<inicio>")) {
                 isMsg=true;
                 token=new StringBuffer;
              }
            } else {  
            ...
            }  
        }  

falae pessoal…

consegui resolver essa situação!!

encontrei um tutorial mto bom na net e foi só me adequar a ele.

segue abaixo o link caso alguém passe pela mesma situação:

Muito obrigado pelo auxilio de todos!!