Lectura de texto con Java Scanner a continuación (patrón de patrón)
-
20-08-2019 - |
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í
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();
}