logo

Java StreamTokenenizer osztály – 1. készlet

A Java nyelven a StreamTokenizer osztály van jelen a java.io csomag . Egy bemeneti adatfolyam elemzésére szolgál, kis darabokra bontva zsetonok ezek a tokenek megkönnyítik a feldolgozást. A token lehet egy szó, egy szám vagy bármilyen konkrét szimbólum. A Stream Tokenizer képes felismerni az idézőjeles karakterláncokat és a különféle megjegyzésstílusokat.

A StreamTokenenizer osztály jellemzői:

Az alábbiakban felsoroljuk a StreamTokenenizer osztály legfontosabb jellemzőit:



  • A bemeneti adatfolyamokat tokenekre, például szimbólumokra, szavakra és számokra bontja.
  • Támogatja a sorszámok követését.
  • A sorvégi karaktereket tokenként tudja kezelni.
  • A szótokeneket automatikusan kisbetűssé is tudja alakítani.

A StreamTokenenizer osztály nyilatkozata

A StreamTokenenizer osztály deklarációja a következő:

publikus osztály A StreamTokenenizer kiterjeszti az objektum implementációit Serializálható

Jegyzet: Kibővíti az objektumot és megvalósítja a Serializable-t.

A StreamTokenenizer osztály konstruktőrei

Ez az osztály két konstruktorból áll, amelyek segítségével többféleképpen hozhatunk létre objektumokat ebből az osztályból. A következő konstruktorok állnak rendelkezésre ebben az osztályban:

1. StreamTokenizer (InputStream): Ez a konstruktor az elavult . Ez egy régebbi módszer a tokenizátor létrehozására közvetlenül egy bájtfolyamból.

Szintaxis:

StreamTokenizer (az InputStream az)

Jegyzet: Ez nem ajánlott, mert bájtokon működik, nem karaktereken.

2. StreamTokenizer (Reader r): Ez a legjobb módja a tokenizátor létrehozásának, amely egy karakterfolyamot használ, amely megfelelően kezeli a szöveget.

Szintaxis:

StreamTokenizer (Reader r)

Példa:

Java
// Demonstrating the working  // of StreamTokenizer(Reader r)  import java.io.*; public class Geeks {    public static void main(String[] args) throws IOException {    Reader r = new StringReader('Hello 123');  StreamTokenizer t = new StreamTokenizer(r);     int token;  while ((token = t.nextToken()) != StreamTokenizer.TT_EOF) {  if (token == StreamTokenizer.TT_WORD) {  System.out.println('Word: ' + t.sval);  } else if (token == StreamTokenizer.TT_NUMBER) {  System.out.println('Number: ' + t.nval);  }  }  } } 

Kimenet
Word: Hello Number: 123.0 


Java StreamTokenizer módszerek

Az alábbi táblázat bemutatja ennek az osztálynak a módszereit.

MódszerLeírás
commentChar()Megadja, hogy a ch karakter egysoros megjegyzést kezdjen. A megjegyzés karaktertől a sor végéig minden karakter figyelmen kívül marad.
vonal()A bemeneti adatfolyam aktuális sorszámát adja vissza.
toString()Az aktuális adatfolyam token karakterlánc-ábrázolását adja vissza, és az előforduló sorszámot.

eolIsSignificant (logikai jelző)

Meghatározza, hogy a sorvégi karaktereket a rendszer jelentős tokenként kezelje-e. Ha valódi sorvégi karaktereket ad vissza tokenként.

rendes karakter(int ch)Megadja, hogy a ch karaktert közönséges karakterként kell kezelni, nem szószámként vagy megjegyzés karakterként.
nextToken()Elemzi a következő tokent a bemeneti adatfolyamból, és visszaadja a típusát.
kisbetűs mód()Meghatározza, hogy a szó tokenek automatikusan kisbetűssé legyenek-e konvertálva.
rendes Char()Megadja, hogy a ch karaktert közönséges karakterként kezelje.
rendes karakterek()Megadja, hogy az alacsonytól a magasig terjedő tartomány minden karakterét közönséges karakterként kezelje.


Most az egyes módszereket részletesen tárgyaljuk:


1. commentChar(): Ez a módszer a karakter megadására szolgál ch amely egysoros megjegyzéssel kezdődik, és a StreamTokenenizer nem ismeri fel az összes karaktert ettől a karaktertől a sor végéig.

Szintaxis:

public void commentChar(int ch)

  • Paraméter: Ez a módszer egyetlen egész értéket vesz fel ch ezt követően az összes szereplőt figyelmen kívül hagyják
  • Visszaküldés típusa: Ez a módszer nem ad vissza semmit.

Példa:

Java
// Demonstrating the working of commentChar() method import java.io.*; public class Geeks {  public static void main(String[] args) throws IOException {  FileReader reader = new FileReader('ABC.txt');  BufferedReader bufferread = new BufferedReader(reader);  StreamTokenizer token = new StreamTokenizer(bufferread);  // Use of commentChar() method  token.commentChar('a');   int t;  while ((t = token.nextToken()) != StreamTokenizer.TT_EOF) {  switch (t) {  case StreamTokenizer.TT_NUMBER:  System.out.println('Number : ' + token.nval);  break;  case StreamTokenizer.TT_WORD:  System.out.println('Word : ' + token.sval);  break;  }  }  } } 

Kimenet:

Word : Programmers  
Number : 1.0
Number : 2.0
Number : 3.0
Word : Geeks
Word : Hello
Word : a
Word : Program
Word : is
Word : explained
Word : here
Word : my
Word : friends.

Jegyzet: Ez a program nem fog sikeresen futni, mert az „ABC.txt” fájl nem létezik. Ha tesztelni akarjuk a kódot a rendszeren, egyszerűen létre kell hoznunk az ABC.txt fájlnevet.

Hozzon létre egy ABC.txt fájlt az alábbi tartalommal:

Programozók 1 2 3 Geeks Hello a Program leírása itt található, barátaim.


2. sor(): Ez a metódus az aktuális sorszámot adja vissza, amelyet a StreamTokenenizer dolgoz fel. Ez a módszer nagyon hasznos, ha ellenőrizni akarjuk a feldolgozás működését, debuggoljuk a programot, és nyomon tudjuk követni a sorszámokat is a tokenizálás ideje alatt.

Szintaxis:

nyilvános ágynemű ()

  • Paraméter: Ez a módszer nem igényel semmilyen paramétert.
  • Visszaküldés típusa: Ez a metódus az aktuális bemeneti adatfolyam sorszámának megfelelő int értéket ad vissza.

Példa:

Java
// Demonstrating the use of lineno() method import java.io.*; public class Geeks {  public static void main(String[] args) throws InterruptedException   FileNotFoundException IOException  {  FileReader reader = new FileReader('ABC.txt');  BufferedReader bufferread = new BufferedReader(reader);  StreamTokenizer token = new StreamTokenizer(bufferread);    token.eolIsSignificant(true);  // Use of lineno() method   // to get current line no.  System.out.println('Line Number:' + token.lineno());  token.commentChar('a');  int t;  while ((t = token.nextToken()) != StreamTokenizer.TT_EOF)  {  switch (t)  {  case StreamTokenizer.TT_EOL:  System.out.println('');  System.out.println('Line No. : ' + token.lineno());  break;  case StreamTokenizer.TT_NUMBER:  System.out.println('Number : ' + token.nval);  break;  case StreamTokenizer.TT_WORD:  System.out.println('Word : ' + token.sval);  break;  }  }  } } 

Kimenet:

Line Number:1  
Word : Progr

Line No. : 2
Number : 1.0

Line No. : 3
Number : 2.0

Line No. : 4
Number : 3.0

Line No. : 5
Word : Geeks

Line No. : 6
Word : Hello

Line No. : 7
Word : This
Word : is


3. toString(): Ez a metódus egy karakterláncot ad vissza, amely az aktuális adatfolyam tokent képviseli a token értékével és az éppen használt sorszámmal.

Szintaxis:

public String toString()

  • Paraméter: Ez a módszer nem igényel paramétereket.
  • Visszaküldés típusa: Ez a metódus egy karakterlánc-értéket ad vissza, amely az aktuális folyam tokent reprezentálja a sorszámmal.

Példa:

Java
// Demonstrating the use of toString() method import java.io.*; public class Geeks {  public static void main(String[] args) throws IOException {  FileReader reader = new FileReader('ABC.txt');  BufferedReader bufferread = new BufferedReader(reader);  StreamTokenizer token = new StreamTokenizer(bufferread);  int t;  while ((t = token.nextToken()) != StreamTokenizer.TT_EOF) {  switch (t) {  case StreamTokenizer.TT_NUMBER:  System.out.println('Number : ' + token.nval);  break;  case StreamTokenizer.TT_WORD:  System.out.println('Word : ' + token.toString());   break;  }  }  } } 

Kimenet:

Word : Token[Programmers] line 1  
Number : 1.0
Number : 2.0
Number : 3.0
Word : Token[Geeks] line 5
Word : Token[Hello] line 6
Word : Token[a] line 7
Word : Token[Program] line 7
Word : Token[is] line 7
Word : Token[explained] line 7
Word : Token[here] line 7
Word : Token[my] line 7
Word : Token[friends.] line 7


4. eolIsSignificant(): Ez a metódus nem ad vissza semmit, hanem annak ellenőrzésére szolgál, hogy az EOL (Sorvég vége) karaktert tokenizálni kell-e. Ha a jelző igaz, akkor a rendszer minden sorvégi karaktert tokenként kezel, és a TT_EOL token típushoz rendeli, a figyelmen kívül hagyott eol karaktert szóközként kezeli.

Szintaxis:

public void eolIssignificant (boolean flag)

  • Paraméter: Ez a metódus logikai értéket vesz fel zászló ha az igaz, akkor a sor vége karaktert a tokenként kezeli, vagy szóközként figyelmen kívül hagyja.
  • Visszaküldés típusa: Ez a módszer nem ad vissza semmit.

Példa:

Java
// Demonstrating the use of eolIsSignificant() method import java.io.*; public class Geeks {  public static void main(String[] args) throws InterruptedException  FileNotFoundException IOException  {  FileReader reader = new FileReader('ABC.txt');  BufferedReader bufferread = new BufferedReader(reader);  StreamTokenizer token = new StreamTokenizer(bufferread);  boolean arg = true;  // Use of eolIsSignificant() method  token.eolIsSignificant(arg);  // Here the 'arg' is set true so EOL is treated as a token  int t;  while ((t = token.nextToken()) != StreamTokenizer.TT_EOF)  {  switch (t)  {  case StreamTokenizer.TT_EOL:  System.out.println('End of Line encountered.');  break;  case StreamTokenizer.TT_NUMBER:  System.out.println('Number : ' + token.nval);  break;  case StreamTokenizer.TT_WORD:  System.out.println('Word : ' + token.sval);  break;  }  }  } } 

Kimenet:

Number : 1.0  
End of Line encountered.
Word : Geeks
End of Line encountered.
Number : 2.0
End of Line encountered.
Word : For
End of Line encountered.
Number : 3.0
End of Line encountered.
Word : Geeks

Jegyzet: Ez a program nem fog sikeresen futni, mert az „ABC.txt” fájl nem létezik. Ha tesztelni akarjuk a kódot a rendszeren, egyszerűen létre kell hoznunk az ABC.txt fájlnevet.

Hozzon létre egy ABC.txxt fájlt az alábbi tartalommal:

1 Geeks 2 3 Geeksért


5. nextToken(): Ez a metódus beolvassa a következő tokent a bemeneti adatfolyamból, és visszaadja a típust. A token típusát a ttípus mező. A típust egész értékként adja vissza, amely lehet TT_WORD TT_NUMBER és TT_EOL stb.

Szintaxis:

public in nextToken()

  • Paraméter: Ez a módszer nem igényel semmilyen paramétert.
  • Visszaküldés típusa: Ez a módszer visszaadja a int a token típusának értéke.

Példa:

Java
// Demonstrating the use of nextToken() method import java.io.*; public class Geeks {  public static void main(String[] args) throws InterruptedException  FileNotFoundException IOException  {  FileReader reader = new FileReader('ABC.txt');  BufferedReader bufferread = new BufferedReader(reader);  StreamTokenizer token = new StreamTokenizer(bufferread);  // Use of nextToken() method to parse Next Token from the Input Stream  int t = token.nextToken();  while ((t = token.nextToken()) != StreamTokenizer.TT_EOF)  {  switch (t)  {  case StreamTokenizer.TT_NUMBER:  System.out.println('Number : ' + token.nval);  break;  case StreamTokenizer.TT_WORD:  System.out.println('Word : ' + token.sval);  break;  }  }  } } 

Kimenet:

Word : This  
Word : program
Word : tells
Number : 2.0
Word : about
Word : use
Word : of
Number : 3.0
Word : next
Word : token
Word : method

Jegyzet: Ez a program nem fog sikeresen futni, mert az „ABC.txt” fájl nem létezik. Ha tesztelni akarjuk a kódot a rendszeren, egyszerűen létre kell hoznunk az ABC.txt fájlnevet.

Hozzon létre egy ABC.txt fájlt az alábbi tartalommal:

1 Ez a program megmondja 2-nek a 3 next token() metódus használatát


6. smallCaseMod(): Ez a metódus logikai értéket vesz fel zászló értéket, és ellenőrzi, hogy a tokent automatikusan kisbetűssé kell-e alakítani. Ha a jelző igaz, akkor a token minden szava kisbetűsre lesz konvertálva, vagy egyébként a tokenek úgy vannak beállítva, ahogy vannak, és nem akarják átalakítani őket.

Szintaxis:

public void SmallCaseMode (logikai jelző)

  • Paraméter: Egy logikai érték kell hozzá zászló érték. Ha igaz, akkor az összes token kisbetűsre lesz konvertálva, és ha hamis, akkor nem.
  • Visszaküldés típusa: Ez a módszer nem ad vissza semmit.

Példa:

Java
// Demonstrating the use of lowerCaseMode() method import java.io.*; public class NewClass {  public static void main(String[] args) throws InterruptedException  FileNotFoundException IOException  {  FileReader reader = new FileReader('ABC.txt');  BufferedReader bufferread = new BufferedReader(reader);  StreamTokenizer token = new StreamTokenizer(bufferread);  // Use of lowerCaseMode() method to  //Here the we have set the Lower Case Mode ON    boolean arg = true;  token.lowerCaseMode(arg);  int t;  while ((t = token.nextToken()) != StreamTokenizer.TT_EOF)  {  switch (t)  {  case StreamTokenizer.TT_NUMBER:  System.out.println('Number : ' + token.nval);  break;  case StreamTokenizer.TT_WORD:  System.out.println('Word : ' + token.sval);  break;  }  }  } } 

Kimenet:

Word : hello  
Word : geeks
Word : this
Word : is
Word : about
Word : lowercasemode

Jegyzet: Ez a program nem fog sikeresen futni, mert az „ABC.txt” fájl nem létezik. Ha tesztelni akarjuk a kódot a rendszeren, egyszerűen létre kell hoznunk az ABC.txt fájlnevet.

Hozzon létre egy ABC.txt fájlt az alábbi tartalommal:

Hello Geek Ez a kisbetűs módról()


7. rendes Char(): Ez a módszer int értéket vesz fel ch karakterként kell kezelni. Ezzel a módszerrel kezelhetjük a karakter a speciális karakterként, például számszóként vagy szóközként.

Szintaxis:

public void rendes Char(int ch)

  • Paraméter: Ez a módszer egyetlen int ch karakterként kezelendő érték.
  • Visszaküldés típusa: Ez a módszer nem ad vissza semmit.

Példa:

Java
// Demonstrating the use of ordinaryChar() method import java.io.*; public class Geeks {  public static void main(String[] args) throws InterruptedException  FileNotFoundException IOException  {  FileReader reader = new FileReader('ABC.txt');  BufferedReader bufferread = new BufferedReader(reader);  StreamTokenizer token = new StreamTokenizer(bufferread);  // Use of ordinaryChar() method   // Here we have taken 's' as an ordinary character  token.ordinaryChar('s');  int t;  while ((t = token.nextToken()) != StreamTokenizer.TT_EOF)  {  switch (t)  {  case StreamTokenizer.TT_NUMBER:  System.out.println('Number : ' + token.nval);  break;  case StreamTokenizer.TT_WORD:  System.out.println('Word : ' + token.sval);  break;  }  }  } } 

Kimenet:

Word : Hello  
Word : Geek
Word : Thi
Word : I
Word : zz
Word : About
Word : ordinaryChar

Jegyzet: Ez a program nem fog sikeresen futni, mert az „ABC.txt” fájl nem létezik. Ha tesztelni akarjuk a kódot a rendszeren, egyszerűen létre kell hoznunk az ABC.txt fájlnevet.

Hozzon létre egy ABC.txt fájlt az alábbi tartalommal:

Hello Geeks Thissss Issszz A szokásosChar()-ról Ez a módszer eltávolította az "s" jelet a teljes adatfolyamból


8. rendes karakterek(): Ez a metódus meghatározza, hogy az alacsonytól a magasig (beleértve) az összes karaktert közönséges karakterként kezeli, és a metódus meghívása után a karakterek többé nem lesznek speciális karakterek.

Szintaxis:

public void rendes karakterek (int alacsony in magas)

  • Paraméter: Ez a módszer két egész értéket vesz fel alacsony és magas ( beleértve) a karakter tartománya, amelyet speciális karakterré alakítanak át.
  • Visszaküldés típusa: Ez a módszer nem ad vissza semmit.

Példa:

Java
// Demonstrating the use of ordinaryChars() method import java.io.*; public class Geeks {  public static void main(String[] args) throws InterruptedException  FileNotFoundException IOException  {  FileReader reader = new FileReader('ABC.txt');  BufferedReader bufferread = new BufferedReader(reader);  StreamTokenizer token = new StreamTokenizer(bufferread);  // Use of ordinaryChars() method   // Here we have taken low = 'a' and high = 'c'   token.ordinaryChars('a''c');  int t;  while ((t = token.nextToken()) != StreamTokenizer.TT_EOF)  {  switch (t)  {  case StreamTokenizer.TT_NUMBER:  System.out.println('Number : ' + token.nval);  break;  case StreamTokenizer.TT_WORD:  System.out.println('Word : ' + token.sval);  break;  }  }  } } 

Kimenet:

Word : Hello  
Word : Geeks
Word : This
Word : is
Word : out
Word : ordin
Word : ryCh
Word : rs

Jegyzet: Ez a program nem fog sikeresen futni, mert az „ABC.txt” fájl nem létezik. Ha tesztelni akarjuk a kódot a rendszeren, egyszerűen létre kell hoznunk az ABC.txt fájlnevet.

Hozzon létre egy ABC.txt fájlt az alábbi tartalommal:

Hello Geeks Ez a szokásos Chars()-ról szól


A StreamTokenenizer használata szöveges fájl tokenizálásához

A StreamTokenizer osztályt a szövegfájl tokenizálására is használják, és itt a Tokenizer osztály methos metódusait használjuk.

1. lépés: Először hozzon létre egy szöveges fájlt a .txt kiterjesztés ugyanabban a gyökérkönyvtárban. Itt hoztuk létre a névvel Geeks.txt .

TextFile' title=



2. lépés: Most hozzon létre egy Java fájlt, és írja be a kódot a szövegfájlban lévő szöveges adatok tokenizálásához.

Geeks.java fájl:

Java
// Java program to Tokenized the text  // file data using StreamTokenizer methods import java.io.*;  public class Geeks {   public static void main(String[] args) throws InterruptedException   FileNotFoundException IOException   {   FileReader reader = new FileReader('Geeks.txt');   BufferedReader bufferread = new BufferedReader(reader);   StreamTokenizer token = new StreamTokenizer(bufferread);     // Use of ordinaryChar() method   // Here we have taken 's' as an ordinary character   token.ordinaryChar('s');     int t;   while ((t = token.nextToken()) != StreamTokenizer.TT_EOF)   {   switch (t)   {   case StreamTokenizer.TT_NUMBER:   System.out.println('Number : ' + token.nval);   break;   case StreamTokenizer.TT_WORD:   System.out.println('Word : ' + token.sval);   break;     }   }   }  }  

Kimenet:

véletlenszerű nincs generátor a java-ban
OutputPélda' loading='lazy' title=


Mappa szerkezete:

Mappastruktúra' loading='lazy' title=


Következő cikk  –  Java.io.StreamTokenenizer osztály Java nyelven | 2. készlet

Kvíz létrehozása