Domanda

Sto cercando di usare la classe Scanner per leggere una riga usando il metodo successivo (Pattern pattern) per catturare il testo prima dei due punti e poi dopo i due punti in modo che s1 = textbeforecolon e s2 = textaftercolon.

La linea è simile alla seguente:

qualcosa: somethingelse

È stato utile?

Soluzione

Esistono due modi per farlo, a seconda di ciò che si desidera.

Se vuoi dividere l'intero input in due punti, puoi usare il metodo useDelimiter(), come altri hanno sottolineato:

// 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...
}

Se vuoi dividere ogni riga per due punti, sarebbe molto più facile usare il metodo String split():

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

Altri suggerimenti

Non ho mai usato Pattern con scanner.

Ho sempre cambiato il delimitatore con una stringa. 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();
}
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top