2010-09-09 7 views
1

j'ai une chaîne qui ressemble à cecinuméros se déplacer d'une liste séparée

String read = "1130:5813|1293:5803|1300:5755|1187:5731|" 

Comme vous pouvez le voir, il y a 4 paires de valeurs entières.

Je veux y ajouter des valeurs dans la liste quelque chose comme ça

a = 1130 
b = 5813 

groupIt pair = new groupIt(a,b); 
List<groupIt> group = new ArrayList<groupIt>(); 
group.add(pair); 

Comment puis-je faire pour la paire de 4 cordes.

Peut-on utiliser Pattern.compile() pour cela?

Répondre

3

Pourquoi utiliser

String[] tokens = read.split("\\|"); 
for (String token : tokens) { 
    String[] params = token.split(":"); 
    Integer a = Integer.parseInt(params[0]); 
    Integer b = Integer.parseInt(params[1]); 

    // ... 

} 
+1

params devrait être une chaîne []. Et vous devrez peut-être échapper à |, car split accepte une expression rationnelle. – gpeche

+0

@gpeche Vous avez absolument raison. Je viens de modifier ma réponse. – mgamer

+0

Oui, je peux le faire aussi. Merci pour l'aide .. cela fonctionne. En fait, j'essayais avec des modèles .. Mais cela fonctionne. – jimmy

0

ne sera pas seulement pour faire bonne mesure, voici votre regex:

public class RegexClass { 
    private static final Pattern PATTERN = Pattern.compile("(\\d{4}):(\\d{4})\\|"); 

    public void parse() { 
     String text = "1130:5813|1293:5803|1300:5755|1187:5731|"; 
     Matcher matcher = PATTERN.matcher(text); 
     int one = 0; 
     int two = 0; 
     while(matcher.find()) { 
      one = Integer.parseInt(matcher.group(1)); 
      two = Integer.parseInt(matcher.group(2)); 

      // Do something with them here 
     } 
    } 
} 

Cependant, je pense que Michael est correct: sa solution est mieux! Bonne chance ...

Questions connexes