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:
[code] > -100, "std_command, Parser Problem"[/code]
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?
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
#3
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]);
}
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 ?