Javassa StreamTokenizer luokka on läsnä java.io paketti . Sitä käytetään syöttövirran jäsentämiseen jakamalla se pieniksi paloiksi, jotka tunnetaan nimellä rahakkeita nämä tunnukset helpottavat käsittelyä. Tunnus voi olla sana, numero tai mikä tahansa tietty symboli. Stream Tokenizer pystyy tunnistamaan lainausmerkkijonot ja erilaiset kommenttityypit.
StreamTokenizer-luokan ominaisuudet:
StreamTokenizer-luokan tärkeimmät ominaisuudet on lueteltu alla:
- Se jakaa syöttövirrat symboleiksi, kuten symboleiksi sanoiksi ja numeroiksi.
- Se tukee rivinumeroiden seurantaa.
- Se voi käsitellä rivin lopun merkkejä rahakkeina.
- Se voi myös muuntaa sanat automaattisesti pieniksi kirjaimiksi.
StreamTokenizer-luokan ilmoitus
StreamTokenizer-luokan ilmoitus on:
julkinen luokka StreamTokenenizer laajentaa Object toteuttaa Serialisoitavaa
Huomautus: Se laajentaa Objectia ja toteuttaa Serializable.
StreamTokenizer-luokan rakentajat
Tämä luokka koostuu kahdesta konstruktorista, joiden avulla voimme luoda tämän luokan objekteja eri tavoin. Tässä luokassa saatavilla olevat rakentajat:
1. StreamTokenizer (InputStream on): Tämä rakentaja on poistettu käytöstä . Se on vanhempi tapa luoda tokenisaattori suoraan tavuvirrasta.
Syntaksi:
StreamTokenizer (InputStream on)
Huomautus: Tätä ei suositella, koska se toimii tavuilla, ei merkeillä.
2. StreamTokenizer (Reader r): Tämä on paras tapa luoda tokenizer, joka käyttää merkkivirtaa, joka käsittelee tekstin oikein.
Syntaksi:
StreamTokenizer (Reader r)
Esimerkki:
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); } } } }
Lähtö
Word: Hello Number: 123.0
Java StreamTokenizer -menetelmät
Alla oleva taulukko esittää tämän luokan menetelmät.
| Menetelmä | Kuvaus |
|---|---|
| kommenttimerkki() | Määrittää, että merkki ch aloittaa yksirivisen kommentin. Kaikki merkit kommenttimerkistä rivin loppuun ohitetaan. |
| linja() | Palauttaa syöttövirran nykyisen rivinumeron. |
| toString() | Palauttaa nykyisen stream-tunnuksen ja sen esiintyvän rivinumeron merkkijonoesityksen. |
eolIsSignificant (boolen lippu) | Määrittää, käsitelläänkö rivin lopun merkkejä merkittävinä tunnuksina. Jos todelliset rivin lopun merkit palautetaan tunnuksina. |
| tavallinen merkki (int ch) | Määrittää, että merkkiä ch käsitellään tavallisena merkkinä, ei sananumerona tai kommenttimerkkinä. |
| nextToken() | Jäsentää seuraavan tunnuksen syöttövirrasta ja palauttaa sen tyypin. |
| SmallCaseMode() | Määrittää, muunnetaanko sanamerkit automaattisesti pieniksi kirjaimiksi. |
| tavallinen merkki() | Määrittää, että merkkiä ch käsitellään tavallisena merkkinä. |
| tavalliset merkit() | Määrittää, että kaikkia merkkejä alueella matalasta korkeaan käsitellään tavallisina merkeinä. |
Nyt aiomme keskustella jokaisesta menetelmästä yksitellen yksityiskohtaisesti:
e r malliesimerkkejä
1. kommenttiChar(): Tätä menetelmää käytetään merkin määrittämiseen ch joka alkaa yhden rivin kommentista ja StreamTokenizer ei tunnista kaikkia merkkejä tästä merkistä rivin loppuun.
Syntaksi:
public void comment Char(int ch)
- Parametri: Tämä menetelmä ottaa yhden kokonaisluvun arvon ch sen jälkeen kaikki hahmot jätetään huomiotta
- Palautustyyppi: Tämä menetelmä ei palauta mitään.
Esimerkki:
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; } } } }
Lähtö:
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.
Huomautus: Tämä ohjelma ei toimi onnistuneesti, koska tiedostoa "ABC.txt" ei ole olemassa. Jos haluamme testata koodia järjestelmässä, meidän on vain luotava tiedostonimi ABC.txt.
Luo ABC.txt-tiedosto, jossa on alla lueteltu seuraava sisältö:
Ohjelmoijat 1 2 3 0.00 / 0 Geeks Hello a Ohjelma selitetään täällä ystäväni.
2. rivi(): Tämä menetelmä palauttaa nykyisen rivinumeron, jonka StreamTokenizer käsittelee. Tämä menetelmä on erittäin hyödyllinen, kun haluamme tarkistaa, miten käsittely toimii, debug-ohjelma ja voimme myös seurata rivinumeroita tokenoinnin aikana.
Syntaksi:
julkinen liinavaatteet()
- Parametri: Tämä menetelmä ei ota mitään parametreja.
- Palautustyyppi: Tämä menetelmä palauttaa int-arvon nykyisen tulovirran rivinumeron.
Esimerkki:
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; } } } }
Lähtö:
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(): Tämä menetelmä palauttaa merkkijonon, joka edustaa nykyistä stream-tunnusta merkin arvon ja rivinumeron kanssa, jota se parhaillaan käyttää.
Syntaksi:
julkinen merkkijono toString()
- Parametri: Tämä menetelmä ei ota mitään parametreja.
- Palautustyyppi: Tämä menetelmä palauttaa merkkijonoarvon, joka edustaa nykyistä stream-tunnusta rivinumerolla.
Esimerkki:
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; } } } }
Lähtö:
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(): Tämä menetelmä ei palauta mitään, mutta sitä käytetään tarkistamaan, pitäisikö EOL (End of Line) -merkki tokenisoida. Jos lippu on tosi, kutakin rivin lopun merkkiä käsitellään tunnuksena ja sille määritetään merkkityyppi TT_EOL, jonka eol-merkkiä ei huomioida, käsitellään välilyöntinä.
Syntaksi:
julkinen void eolOnSignificant(boolen lippu)
- Parametri: Tämä menetelmä ottaa loogisen arvon lippu jos se on tosi, rivin loppua käsitellään merkkinä tai jätetään huomiotta välilyöntinä.
- Palautustyyppi: Tämä menetelmä ei palauta mitään.
Esimerkki:
npm välimuistin tyhjennysvoimaJava
// 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; } } } }
Lähtö:
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
Huomautus: Tämä ohjelma ei toimi onnistuneesti, koska tiedostoa "ABC.txt" ei ole olemassa. Jos haluamme testata koodia järjestelmässä, meidän on vain luotava tiedostonimi ABC.txt.
Luo tiedosto ABC.txxt, jossa on alla lueteltu seuraava sisältö:
1 nörtti 2 3 nörttiä varten
5. nextToken(): Tämä menetelmä lukee seuraavan merkin syöttövirrasta ja palauttaa tyypin. Tunnusmerkin tyyppi on tallennettu ttyyppi ala. Se palauttaa tyypin kokonaislukuarvona, joka voi olla TT_WORD TT_NUMBER ja TT_EOL jne.
Syntaksi:
julkinen in nextToken()
- Parametri: Tämä menetelmä ei ota mitään parametreja.
- Palautustyyppi: Tämä menetelmä palauttaa int tunnuksen tyypin arvo.
Esimerkki:
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; } } } }
Lähtö:
Word : This
Word : program
Word : tells
Number : 2.0
Word : about
Word : use
Word : of
Number : 3.0
Word : next
Word : token
Word : method
Huomautus: Tämä ohjelma ei toimi onnistuneesti, koska tiedostoa "ABC.txt" ei ole olemassa. Jos haluamme testata koodia järjestelmässä, meidän on vain luotava tiedostonimi ABC.txt.
Luo ABC.txt-tiedosto, jossa on alla lueteltu seuraava sisältö:
1 Tämä ohjelma kertoo 2 menetelmän 3 next token() käytöstä
6. smallCaseMod(): Tämä menetelmä ottaa loogisen arvon lippu arvo ja tarkistaa, muunnetaanko merkki automaattisesti pieniksi kirjaimiksi. Jos lippu on tosi, kaikki tunnuksen sanat muunnetaan pieniksi kirjaimilla tai muuten merkit asetetaan sellaisiksi kuin ne ovat, eivätkä ne halua muuntaa niitä.
Syntaksi:
public void smallCaseMode(boolen lippu)
- Parametri: Se vaatii boolen lippu arvo. Jos se on tosi, kaikki merkit muunnetaan pieniksi ja jos epätosi, niitä ei muunneta.
- Palautustyyppi: Tämä menetelmä ei palauta mitään.
Esimerkki:
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; } } } }
Lähtö:
Word : hello
Word : geeks
Word : this
Word : is
Word : about
Word : lowercasemode
Huomautus: Tämä ohjelma ei toimi onnistuneesti, koska tiedostoa "ABC.txt" ei ole olemassa. Jos haluamme testata koodia järjestelmässä, meidän on vain luotava tiedostonimi ABC.txt.
Luo ABC.txt-tiedosto, jossa on alla lueteltu seuraava sisältö:
Hei Geeks Tämä koskee pienikokoista tilaa ()
7. Tavallinen Char(): Tämä menetelmä ottaa int-arvon ch tulee kohdella hahmona. Tällä menetelmällä voimme hoitaa a merkki a erikoismerkkinä, kuten numerosana tai välilyönti.
Syntaksi:
public void tavallinen merkki(int ch)
- Parametri: Tämä menetelmä vaatii yhden int ch arvoa, jota käsitellään hahmona.
- Palautustyyppi: Tämä menetelmä ei palauta mitään.
Esimerkki:
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; } } } }
Lähtö:
Word : Hello
Word : Geek
Word : Thi
Word : I
Word : zz
Word : About
Word : ordinaryChar
Huomautus: Tämä ohjelma ei toimi onnistuneesti, koska tiedostoa "ABC.txt" ei ole olemassa. Jos haluamme testata koodia järjestelmässä, meidän on vain luotava tiedostonimi ABC.txt.
Luo ABC.txt-tiedosto, jossa on alla lueteltu seuraava sisältö:
Hei Geeks Thissss Issszz Tietoja tavallisesta Char():sta Tämä menetelmä on poistanut 's' koko streamista
8. tavalliset merkit(): Tämä menetelmä määrittää, että kaikkia merkkejä alueella matalasta korkeaan (mukaan lukien) käsitellään tavallisina merkeinä ja tämän menetelmän kutsumisen jälkeen merkkejä ei enää käsitellä erikoismerkeinä.
java-kytkin
Syntaksi:
public void tavalliset merkit (int matala in korkea)
- Parametri: Tämä menetelmä ottaa kaksi kokonaislukuarvoa matala ja korkea ( mukaan lukien) erikoismerkiksi muunnetun merkin alue.
- Palautustyyppi: Tämä menetelmä ei palauta mitään.
Esimerkki:
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; } } } }
Lähtö:
Word : Hello
Word : Geeks
Word : This
Word : is
Word : out
Word : ordin
Word : ryCh
Word : rs
Huomautus: Tämä ohjelma ei toimi onnistuneesti, koska tiedostoa "ABC.txt" ei ole olemassa. Jos haluamme testata koodia järjestelmässä, meidän on vain luotava tiedostonimi ABC.txt.
Luo ABC.txt-tiedosto, jossa on alla lueteltu seuraava sisältö:
Hello Geeks Tämä koskee tavallisia Chars()
StreamTokenizerin käyttäminen tekstitiedoston tokenointiin
StreamTokenizer-luokkaa käytetään myös tekstitiedoston tokenointiin ja tässä käytetään Tokenizer-luokan methojen menetelmiä.
Vaihe 1: Luo ensin tekstitiedosto sovelluksella .txt laajennus samassa juurihakemistossa. Täällä loimme sen nimellä Geeks.txt .
Vaihe 2: Luo nyt Java-tiedosto ja kirjoita koodi tekstitiedostossa oleviin tokenoituihin tekstitietoihin.
Geeks.java-tiedosto:
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; } } } }
Lähtö:
Kansiorakenne:
Seuraava artikkeli – Java.io.StreamTokenenizer-luokka Javassa | Sarja 2