usedelimiter txt texto scanner por linea leer ejemplo como clase archivo java delimiter

txt - ¿Cómo uso un delimitador en Java Scanner?



scanner java int (3)

El escáner también puede usar delimitadores que no sean espacios en blanco.

Ejemplo sencillo de la API de escáner :

String input = "1 fish 2 fish red fish blue fish"; // //s* means 0 or more repetitions of any whitespace character // fish is the pattern to find Scanner s = new Scanner(input).useDelimiter("//s*fish//s*"); System.out.println(s.nextInt()); // prints: 1 System.out.println(s.nextInt()); // prints: 2 System.out.println(s.next()); // prints: red System.out.println(s.next()); // prints: blue // don''t forget to close the scanner!! s.close();

El punto es entender las expresiones regulares ( regex ) dentro del Scanner::useDelimiter . Encuentre un tutorial de useDelimiter javatutorialhq.com/java/util/scanner-class-tutorial/… .

Para comenzar con expresiones regulares aquí puede encontrar un buen tutorial.

Notas

abc… Letters 123… Digits /d Any Digit /D Any Non-digit character . Any Character /. Period [abc] Only a, b, or c [^abc] Not a, b, nor c [a-z] Characters a to z [0-9] Numbers 0 to 9 /w Any Alphanumeric character /W Any Non-alphanumeric character {m} m Repetitions {m,n} m to n Repetitions * Zero or more repetitions + One or more repetitions ? Optional character /s Any Whitespace /S Any Non-whitespace character ^…$ Starts and ends (…) Capture Group (a(bc)) Capture Sub-group (.*) Capture all (ab|cd) Matches ab or cd

sc = new Scanner(new File(dataFile)); sc.useDelimiter(",|/r/n");

No entiendo cómo funciona el delimitador, ¿alguien puede explicar esto en términos simples?


Con Scanner, los delimitadores predeterminados son los espacios en blanco.

Pero Scanner puede definir dónde comienza y termina un token en función de un conjunto de delimitador , que podría especificarse de dos maneras:

  1. Usando el método del escáner: useDelimiter (patrón de cadena)
  2. Usando el método Scanner: useDelimiter (Patrón de patrón) donde Patrón es una expresión regular que especifica el conjunto de delimitadores.

Por lo useDelimiter() métodos useDelimiter() se usan para tokenizar la entrada del escáner, y comportarse como la clase StringTokenizer , eche un vistazo a estos tutoriales para obtener más información:

Y aquí hay un javatutorialhq.com/java/util/scanner-class-tutorial/… :

public static void main(String[] args) { // Initialize Scanner object Scanner scan = new Scanner("Anna Mills/Female/18"); // initialize the string delimiter scan.useDelimiter("/"); // Printing the tokenized Strings while(scan.hasNext()){ System.out.println(scan.next()); } // closing the scanner stream scan.close(); }

Imprime esta salida:

Anna Mills Female 18


Por ejemplo:

String myInput = null; Scanner myscan = new Scanner(System.in).useDelimiter("//n"); System.out.println("Enter your input: "); myInput = myscan.next(); System.out.println(myInput);

Esto le permitirá usar Enter como delimitador.

Por lo tanto, si ingresa:

Hello world (ENTER)

imprimirá ''Hello World''.