Pregunta

Estoy tratando de usar la clase Scanner para leer una línea usando el siguiente método (Patrón de patrón) para capturar el texto antes de los dos puntos y luego después de los dos puntos para que s1 = textbeforecolon y s2 = textaftercolon.

La línea se ve así:

algo: algo así

¿Fue útil?

Solución

Hay dos formas de hacerlo, dependiendo de lo que quieras específicamente.

Si desea dividir la entrada completa por dos puntos, puede usar el método useDelimiter(), como otros han señalado:

// 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 desea dividir cada línea por dos puntos, entonces sería mucho más fácil usar el método String split():

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

Otros consejos

Nunca he usado Pattern con escáner.

Siempre he cambiado el delímetro con una cadena. 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();
}
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top