2009-05-09 7 views
3

J'essaie d'utiliser la classe Scanner pour lire une ligne en utilisant la méthode suivante (Pattern pattern) pour capturer le texte avant le deux-points puis après le deux-points de sorte que s1 = textbeforecolon et s2 = textaftercolon.Lire le texte avec Java Scanner suivant (motif Pattern)

La ligne ressemble à ceci:

quelque chose: somethingelse

+0

-t-il d'utiliser spécifiquement un objet modèle? Vous pouvez diviser une chaîne par une expression régulière sans utiliser l'objet Pattern. – hbw

Répondre

10

Il y a deux façons de le faire, selon spécifiquement ce que vous voulez.

Si vous voulez diviser l'entrée entière par des virgules, vous pouvez utiliser la méthode useDelimiter(), comme d'autres l'ont souligné:

// You could also say "scanner.useDelimiter(Pattern.compile(":"))", but 
// that's the exact same thing as saying "scanner.useDelimiter(":")". 
scanner.useDelimiter(":"); 

// Examines each token one at a time 
while (scanner.hasNext()) 
{ 
    String token = scanner.next(); 
    // Do something with token here... 
} 

Si vous voulez diviser chaque ligne par deux points, il serait beaucoup plus facile à utiliser la méthode de split()String:

while (scanner.hasNextLine()) 
{ 
    String[] parts = scanner.nextLine().split(":"); 
    // The parts array now contains ["something", "somethingelse"] 
} 
+0

Vous avez raison, split() serait probablement le meilleur choix. – Aaron

0
File file = new File("someFileWithLinesContainingYourExampleText.txt"); 
Scanner s = new Scanner(file); 
s.useDelimiter(":"); 

while (!s.hasNextLine()) { 
    while (s.hasNext()) { 
     String text = s.next(); 
    System.out.println(text); 
    } 

    s.nextLine(); 
} 
Questions connexes