Fazendo parser de um comando com virgula

3 respostas
rock-skull

Desculpem pelo título, mas eu não consegui pensar em algo bem descritivo para o meu problema.

Estou conversando com um equipamento via socket. Conexão está ok.

O problema é o seguinte, ele me retorna uma string no seguinte formato, para indicar errors:

> -100, "std_command, Parser Problem"

Como exemplo de um erro de comando desocnhecido. Como podem ver, o formato da mensagem é:

<código_erro> <virgula> <espaço> <aspas duplas> <mensagem> <aspas duplas>

Sendo que dentro das aspas duplas, eu também posso ter vŕgula. Eu preciso separar isso em:

int = <codigo erro>
 String = <mensagem>

Mas estou tendo dificuldades com isso, alguém tem alguma idéia?

3 Respostas

rock-skull

Eu até consegui fazer, mas ficou muito gambiarra.

public static void main(String[] args){
		String message = "-208, \"Problem doing, something\"";
		StringTokenizer tokenizer = new StringTokenizer(message,", \"");
		int code = Integer.parseInt(tokenizer.nextToken());
		StringBuffer buf = new StringBuffer();
		while(tokenizer.hasMoreTokens()){
			buf.append(tokenizer.nextToken());
			buf.append(" ");
		}
		String errorMessage = buf.toString();
		System.out.println("Code: "+code+" | Message: "+errorMessage);
	}
pmlm

Usa o método split:

public static void main(String[] args){  

        String message = "-208, \"Problem doing, something\"";  
        
        String[] tokens = message.split(",",2);        
        
        System.out.println("Code: "+tokens[0]+" | Message: "+tokens[1]);  
    }
rock-skull

Mas split ainda me retorna a string com aspas.

Poderia pegar a sua ideia e fazer o seguinte:

public static void main(String[] args){    
        String message = "-208, \"Problem doing, something\"";    
        String[] tokens = message.split(",",2);
        String errorMessage = tokens[1].replace('\"',' ').trim();          
        System.out.println("Code: "+tokens[0]+" | Message: "+errorMessage);    
    }

Já fica com menos cara de gambiarra. Obrigado.

Mais alguma sugestão ?

Criado 6 de setembro de 2011
Ultima resposta 6 de set. de 2011
Respostas 3
Participantes 2