В Java StreamTokenizer клас присъства в пакет java.io . Използва се за анализиране на входен поток чрез разделянето му на малки парчета, известни като токени тези токени улесняват обработката. Токенът може да бъде дума, число или всеки специфичен символ. Stream Tokenizer може да разпознава цитирани числа и различни стилове на коментари.
Характеристики на класа StreamTokenizer:
Основните характеристики на класа StreamTokenizer са изброени по-долу:
- Той разделя входните потоци на токени като символи, думи и числа.
- Поддържа номера на редове за проследяване.
- Може да третира символите в края на реда като токени.
- Той може също автоматично да преобразува токените на думи в малки букви.
Декларация на клас StreamTokenizer
Декларацията на класа StreamTokenizer е:
публичен клас StreamTokenizer разширява Object implements Serializable
Забележка: Той разширява Object и внедрява Serializable.
Конструктори на класа StreamTokenizer
Този клас се състои от два конструктора, с помощта на които можем да създаваме обекти от този клас по различни начини. Следните са наличните конструктори в този клас:
1. StreamTokenizer (InputStream е): Този конструктор е отхвърлено . Това е по-стар начин за създаване на токенизатор директно от байтов поток.
Синтаксис:
StreamTokenizer (InputStream е)
Забележка: Това не се препоръчва, защото работи с байтове, а не със знаци.
2. StreamTokenizer (Reader r): Това е най-добрият начин за създаване на токенизатор, той използва поток от знаци, който обработва правилно текста.
Синтаксис:
StreamTokenizer (Четец r)
Пример:
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); } } } }
Изход
Word: Hello Number: 123.0
excel премахнете първия знак
Методи на Java StreamTokenizer
Таблицата по-долу демонстрира методите на този клас.
| Метод | Описание |
|---|---|
| commentChar() | Указва, че символът ch започва едноредов коментар. Всички знаци от знака за коментар до края на реда се игнорират. |
| линия() | Връща номера на текущия ред на входния поток. |
| toString() | Връща низово представяне на текущия токен на потока и номера на реда, който се появява. |
eolIsSignificant(булев флаг) | Определя дали знаците в края на реда се третират като значими токени. Ако истински знаци в края на реда се връщат като токени. |
| обикновен знак (int ch) | Указва, че знакът ch се третира като обикновен знак, а не като номер на дума или знак за коментар. |
| nextToken() | Анализира следващия токен от входния поток и връща неговия тип. |
| smallCaseMode() | Определя дали токените на думи се преобразуват автоматично в малки букви. |
| обикновен Char() | Указва, че символът ch се третира като обикновен символ. |
| обикновени знаци () | Указва, че всички знаци в диапазона от ниски към високи се третират като обикновени знаци. |
Сега ще обсъдим подробно всеки метод един по един:
1. commentChar(): Този метод се използва за указване на знака гл който започва с коментар на един ред и всички знаци от този знак до края на реда не се разпознават от StreamTokenizer.
Синтаксис:
обществен невалиден коментар Char(int ch)
- Параметър: Този метод приема една цяло число гл след това всички знаци се игнорират
- Тип връщане: Този метод не връща нищо.
Пример:
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; } } } }
Изход:
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.
Забележка: Тази програма няма да работи успешно, защото файлът „ABC.txt“ не съществува. Ако искаме да тестваме кода в системата, просто трябва да създадем файл с име ABC.txt.
Създайте файл ABC.txt със следното съдържание, което е посочено по-долу:
Програмисти 1 2 3 Отрепки Здравейте, една програма е обяснена тук приятели мои.
2. ред(): Този метод връща номера на текущия ред, който се обработва от StreamTokenizer. Този метод е много полезен, когато искаме да проверим как работи обработката, отстраняване на грешки в програмата и можем също така да проследим номерата на редовете по време на токенизиране.
Синтаксис:
public int linen()
- Параметър: Този метод не приема никакъв параметър.
- Тип връщане: Този метод връща int стойност номера на реда на текущия входен поток.
Пример:
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; } } } }
Изход:
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(): Този метод връща низ, който представлява текущия токен на потока със стойността на токена и номера на реда, който използва в момента.
Синтаксис:
публичен String toString()
- Параметър: Този метод не приема никакъв параметър.
- Тип връщане: Този метод връща низова стойност, представляваща текущия токен на потока с номера на реда.
Пример:
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; } } } }
Изход:
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(): Този метод не връща нищо, но се използва за проверка дали символът EOL (край на реда) трябва да бъде токенизиран. Ако флагът е верен, тогава всеки символ в края на реда се третира като токен и му се присвоява тип токен TT_EOL, символът eol се игнорира и се третира като интервал.
Синтаксис:
public void eolIsSignificant(булев флаг)
- Параметър: Този метод приема булево значение знаме ако е вярно, тогава знакът за край на реда се третира като токен или се игнорира като интервал.
- Тип връщане: Този метод не връща нищо.
Пример:
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; } } } }
Изход:
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
Забележка: Тази програма няма да работи успешно, защото файлът „ABC.txt“ не съществува. Ако искаме да тестваме кода в системата, просто трябва да създадем файл с име ABC.txt.
Създайте файл ABC.txxt със следното съдържание, което е посочено по-долу:
1 маниаци 2 за 3 маниаци
5. nextToken(): Този метод чете следващия токен от входния поток и връща типа. Типът на токена се съхранява в ttype поле. Той връща типа като цяло число, което може да бъде TT_WORD TT_NUMBER и TT_EOL и т.н.
Синтаксис:
public int nextToken()
е празна java
- Параметър: Този метод не приема никакъв параметър.
- Тип връщане: Този метод връща вътр стойност на типа токен.
Пример:
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; } } } }
Изход:
Word : This
Word : program
Word : tells
Number : 2.0
Word : about
Word : use
Word : of
Number : 3.0
Word : next
Word : token
Word : method
Забележка: Тази програма няма да работи успешно, защото файлът „ABC.txt“ не съществува. Ако искаме да тестваме кода в системата, просто трябва да създадем файл с име ABC.txt.
Създайте файл ABC.txt със следното съдържание, което е посочено по-долу:
1 Тази програма разказва 2 за използването на 3 метода next token().
6. lowerCaseMod(): Този метод приема булево значение знаме стойност и проверява дали токенът трябва автоматично да се преобразува в малки букви. Ако флагът е верен, тогава всички думи на токена се преобразуват в малки букви или в противен случай токените се задават така, както са и не искат да ги преобразуват.
Синтаксис:
public void lowerCaseMode(булев флаг)
b+ дърво
- Параметър: Изисква се булево значение знаме стойност. Ако е вярно, тогава всички токени се преобразуват в малки букви и ако е невярно, тогава няма да бъдат преобразувани.
- Тип връщане: Този метод не връща нищо.
Пример:
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; } } } }
Изход:
Word : hello
Word : geeks
Word : this
Word : is
Word : about
Word : lowercasemode
Забележка: Тази програма няма да работи успешно, защото файлът „ABC.txt“ не съществува. Ако искаме да тестваме кода в системата, просто трябва да създадем файл с име ABC.txt.
Създайте файл ABC.txt със следното съдържание, което е посочено по-долу:
Здравейте маниаци, става въпрос за LowerCaseMode()
7. обикновен Char(): Този метод приема int стойност гл трябва да се третира като характер. С помощта на този метод можем да лекуваме a характер а като специален знак като числова дума или интервал.
Синтаксис:
public void normalChar(int ch)
- Параметър: Този метод отнема единичен int гл стойност, която ще се третира като знак.
- Тип връщане: Този метод не връща нищо.
Пример:
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; } } } }
Изход:
Word : Hello
Word : Geek
Word : Thi
Word : I
Word : zz
Word : About
Word : ordinaryChar
Забележка: Тази програма няма да работи успешно, защото файлът „ABC.txt“ не съществува. Ако искаме да тестваме кода в системата, просто трябва да създадем файл с име ABC.txt.
Създайте файл ABC.txt със следното съдържание, което е посочено по-долу:
Здравейте маниаци Thissss Issszz Относно normalChar() Този метод премахва 's' от целия поток
8. обикновени знаци (): Този метод указва, че всички символи в диапазона от ниски до високи (включително) ще бъдат третирани като обикновени символи и след извикване на този метод знаците вече няма да бъдат третирани като специални символи.
Синтаксис:
public void normalChars(int low int high)
- Параметър: Този метод приема две цели числа ниско и високо ( включително) диапазонът на знака, който се преобразува в специален знак.
- Тип връщане: Този метод не връща нищо.
Пример:
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; } } } }
Изход:
Word : Hello
Word : Geeks
Word : This
Word : is
Word : out
Word : ordin
Word : ryCh
Word : rs
Забележка: Тази програма няма да работи успешно, защото файлът „ABC.txt“ не съществува. Ако искаме да тестваме кода в системата, просто трябва да създадем файл с име ABC.txt.
Създайте файл ABC.txt със следното съдържание, което е посочено по-долу:
Здравейте маниаци, това е за обикновените знаци ()
Използване на StreamTokenizer за токенизиране на текстов файл
Класът StreamTokenizer също се използва за токенизиране на текстовия файл и тук използваме методите на методите на класа Tokenizer.
Стъпка 1: Първо създайте текстов файл с .txt разширение в същата основна директория. Тук го създадохме с името Geeks.txt .
Стъпка 2: Сега създайте Java файл и напишете кода, за да токенизирате текстовите данни, налични в текстовия файл.
Geeks.java файл:
java int към низ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; } } } }
Изход:
Структура на папката:
Следваща статия – Java.io.StreamTokenizer клас в Java | Комплект 2