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

Était-ce utile?

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();
}
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top