2015-10-12 2 views
1

J'essaie d'obtenir un entier (juste après « ECOUTE: STATION \ nID: » sur la chaîne montré dans ma capture d'écran en utilisant le code suivant:Comment puis-je obtenir un entier sur une chaîne avec des sections

int zahl = Integer.parseInt(sentence.substring(sentence.indexOf("PLAYING:STATION\n 
ID:")+1).trim()); 

Mais tout ce que je reçois est un NumberFormatException Comment puis-je dire la garniture() -.? méthode qu'il doit arrêter juste après le nombre

Screenshot of the complete String

Répondre

1

Puisque vous devez choisir parmi plusieurs une entrée ID: spécifique ceux, je pense que la meilleure façon de procéder est d'utiliser un expression régulière. En utilisant votre échantillon de sortie, je l'ai écrit le code suivant:

String text = "PLAYING_MODE\nID:\nPLAYING:STATION\nID:2\nNAME:wazee.org"; 
Pattern p = Pattern.compile("PLAYING:STATION\nID:(\\d+)"); 
Matcher m = p.matcher(text); 
if (m.find()) { 
    int number = Integer.parseInt(m.group(1)); 
    System.out.println(number); 
} 

qui parse correctement le nombre ID qui suit immédiatement PLAYING_STATION.

Vous pouvez ainsi travailler à plusieurs reprises avec la méthode String.indexOf() surchargée (trouver PLAYING:STATION, puis le suivant ID:, puis les suivantes \n). Je pense que le code pourrait être plus difficile à lire, mais il ferait encore le travail.

J'espère que cela sera utile ...

Cheers,

Jeff