“Utilizando patrones/delimitadores para obtener una cadena de texto desde un escáner”
Tengo un archivo .txt que tiene información ordenada como
campo de información; campo de información; campo de información; campo de información y así sucesivamente. Todos los campos son Strings.
¿Cómo puedo crear un método que obtenga el siguiente campo de información?
Más información:
Exporté el archivo .txt desde Microsoft Access con “;” como delimitador. Si mi Scanner se llama sc, ¿cómo puedo hacer un método tipo sc.nextField()? Lo que hice originalmente fue tener un bucle mientras recorría cada palabra con sc.next() y agregaba la palabra a un String hasta que encuentre un “;”, pero ese método ignoraba mis nuevas líneas dentro de los campos.
private static String grabField(Scanner sc) {
String wordInFloat;
String wordsToPass = "";
while (true) {
wordInFloat = sc.next();
if (wordInFloat.endsWith(";"))
break;
else
wordsToPass += wordInFloat + " ";
}
return wordsToPass;
}
davy.ai
Para crear un método que obtenga el siguiente campo de información, puede modificar su método existente para usar el delimitador “& quot;; & quot;” en lugar de espacios en blanco. Aquí hay una implementación de ejemplo:
El método
useDelimiter
establece el delimitador para el escáner en;
seguido de cualquier cantidad de espacios en blanco. Esto le permite capturar correctamente los campos con nuevas líneas dentro de ellos. El métodonext
devuelve el siguiente token, que en este caso es el siguiente campo de información.Puede llamar a este método en un bucle para iterar sobre todos los campos en el archivo. Aquí hay un ejemplo:
En este ejemplo, el método
hasNext
verifica si hay más campos para leer. Si es así, se llama al métodogetNextField
para recuperar el siguiente campo. Luego puede procesar el campo como desee. Una vez que no haya más campos, el escáner se cierra con el métodoclose
.