Lesen von Text mit Java Scanner nächstem (Pattern-Muster)
-
20-08-2019 - |
Frage
Ich versuche, die Scanner-Klasse zu verwenden, um eine Linie mit dem nächsten (Pattern-Muster) Methode, um lesen Sie den Text vor dem Doppelpunkt und dann nach dem Doppelpunkt zu erfassen, so dass s1 = textbeforecolon und s2 = textaftercolon.
Die Zeile sieht wie folgt aus:
etwas: somethingelse
Lösung
Es gibt zwei Möglichkeiten, dies zu tun, je nachdem, speziell, was Sie wollen.
Wenn Sie die gesamte Eingabe von Doppelpunkte teilen möchten, dann können Sie die useDelimiter()
Methode verwenden, wie andere haben darauf hingewiesen:
// 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...
}
Wenn Sie jede Zeile mit einem Doppelpunkt teilen wollen, dann wäre es viel einfacher sein String
des split()
Methode zu verwenden:
while (scanner.hasNextLine())
{
String[] parts = scanner.nextLine().split(":");
// The parts array now contains ["something", "somethingelse"]
}
Andere Tipps
ich nie Muster mit Scanner verwendet haben.
Ich habe immer nur das Trennzeichen mit einem String geändert. 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();
}