Chaîne d'analyse en Java à l'aide d'un Modèle
Je suis en train d'analyser 3 morceaux de l'information à partir d'un String
.
Voici mon code:
text = "H:7 E:7 P:10";
String pattern = "[HEP]:";
Pattern p = Pattern.compile(pattern);
String[] attr = p.split(text);
Je voudrais revenir:
String[0] = "7"
String[1] = "7"
String[2] = "10"
Mais tout ce que je reçois est:
String[0] = ""
String[1] = "7 "
String[2] = "7 "
String[3] = "10"
Des suggestions?
- Pourquoi ne pas les séparer par des espaces d'abord, puis dans chaque index, il suffit de chercher un modèle spécifique, dans votre cas, le ":" et juste obtenir le caractère/s après que, depuis, il suit le même schéma encore et encore.
- Le format est toujours d'avoir un "H", "E", et "P" dans la succession?
- Pourquoi ne pas simplement faire une regexp trouver tous les numéros?
- J'allais suggérer ce qu'Andy n'. Bonne chose que j'ai rafraîchi la page! Si vous analyser chaque chaîne à la recherche pour le côlon, et insérer le résultat dans une Carte, où le texte avant de le côlon est la Clé, et le texte après les deux-points (que vous pouvez d'abord le convertir en Entier/Double) est la Valeur.
- oui, il sera toujours de H, E, P, dans cet ordre.
- Quels sont réellement les règles d'analyse que vous souhaitez mettre en place?
- parce que je n'avais pas pensé à ça. Merci pour l'idée
Vous devez vous connecter pour publier un commentaire.
Une solution élégante, j'ai juste imaginé:
De la javadoc, http://docs.oracle.com/javase/6/docs/api/java/util/regex/Pattern.html#split(java.lang.CharSequence) :
Vous obtenez la chaîne vide d'abord parce que vous avez un match au début de la chaîne, il me semble.
Si j'essaie de code avec String texte = "Un H:7 E:7 P:10" j'ai en effet:
Espère que cela aide.
Je voudrais écrire une pleine expression régulière comme suit:
En se basant sur vos commentaires, j'en déduis que vous ne voulez pour obtenir les numéros de cette chaîne (dans un ordre particulier?).
Je recommanderais donc à quelque chose comme ceci: