Lecture de texte avec Java Scanner next (Pattern pattern)
-
20-08-2019 - |
Question
J'essaie d'utiliser la classe Scanner pour lire une ligne à l'aide de la méthode suivante (Motif) afin de capturer le texte avant les deux points, puis après les deux points, de sorte que s1 = textbeforecolon et s2 = textaftercolon.
La ligne ressemble à ceci:
quelque chose: quelque chose de différent
La solution
Il existe deux manières de procéder, en fonction de ce que vous souhaitez.
Si vous souhaitez fractionner toute l'entrée par des deux points, vous pouvez utiliser la méthode useDelimiter()
, comme l'ont souligné d'autres personnes:
// 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 souhaitez fractionner chaque ligne par un signe deux-points, il serait beaucoup plus simple d'utiliser la méthode de String
split()
:
while (scanner.hasNextLine())
{
String[] parts = scanner.nextLine().split(":");
// The parts array now contains ["something", "somethingelse"]
}
Autres conseils
Je n'ai jamais utilisé Pattern avec un scanner.
J'ai toujours juste changé le délimètre avec une chaîne. http : //java.sun.com/j2se/1.5.0/docs/api/java/util/Scanner.html#useDelimiter (java.lang.String)
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();
}