2009-05-09 2 views
3

Ich versuche, die Scanner-Klasse zu verwenden, um eine Zeile mit der nächsten (Mustermuster) -Methode zu lesen, um den Text vor dem Doppelpunkt und dann nach dem Doppelpunkt zu erfassen, so dass s1 = textbeforecolon und s2 = Textnachzeichnung.Lesen von Text mit Java Scanner weiter (Mustermuster)

Die Linie sieht wie folgt aus:

etwas: somethingelse

+0

Hat es speziell ein Pattern-Objekt verwenden? Sie können eine Zeichenfolge durch einen regulären Ausdruck aufteilen, ohne das Musterobjekt zu verwenden. – hbw

Antwort

10

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 durch einen Doppelpunkt getrennt werden soll, dann wäre es viel einfacher zu bedienen String ‚s split() Methode:

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

Sie haben Recht, Split() wäre wahrscheinlich die beste Wahl. – 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(); 
}