Јава СтреамТокенизер Цласс - Сет 1

Јава СтреамТокенизер Цласс - Сет 1

У Јави СтреамТокенизер класа је присутна у јава.ио пакет . Користи се за рашчлањивање улазног тока разбијањем на мале делове познате као токенс ови токени олакшавају обраду. Токен може бити реч, број или било који специфичан симбол. Стреам Токенизер може препознати низове наводаних бројева и различите стилове коментара.

Карактеристике класе СтреамТокенизер:

Кључне карактеристике класе СтреамТокенизер су наведене у наставку:

  • Разбија улазне токове у токене попут симбола, речи и бројева.
  • Подржава бројеве линија за праћење.
  • Може третирати знакове на крају реда као токене.
  • Такође може аутоматски да конвертује токене речи у мала слова.

Декларација класе СтреамТокенизер

Декларација класе СтреамТокенизер је:

публиц цласс СтреамТокенизер ектендс Објецт имплементс Сериализабле

Напомена: Проширује Објецт и имплементира Сериализабле.

Конструктори класе СтреамТокенизер

Ова класа се састоји од два конструктора уз помоћ којих можемо креирати објекте ове класе на различите начине. Следећи су конструктори доступни у овој класи:

1. СтреамТокенизер (ИнпутСтреам је): Овај конструктор је застарео . То је старији начин да се креира токенизер директно из тока бајтова.

Синтакса:

СтреамТокенизер (ИнпутСтреам је)

Напомена: Ово се не препоручује јер ради на бајтовима, а не на знаковима.

2. СтреамТокенизер (Реадер р): Ово је најбољи начин за креирање токенизер-а који користи ток знакова који правилно рукује текстом.

Синтакса:

СтреамТокенизер (Реадер р)

Пример:

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  


Јава СтреамТокенизер методе

Табела испод показује методе ове класе.

Метод Опис
цомментЦхар() Одређује да знак цх започиње коментар у једном реду. Сви знакови од карактера коментара до краја реда се игноришу.
линија() Враћа тренутни број линије улазног тока.
тоСтринг() Враћа приказ стринга тренутног токена тока и број реда који се појављује.

еолИсСигнифицант (боолеан флаг)

Одређује да ли се знакови на крају реда третирају као значајни токени. Ако се прави знакови на крају реда враћају као токени.

обичан знак (инт цх) Одређује да се знак цх третира као обичан знак, а не као број речи или знак коментара.
нектТокен() Рашчлањује следећи токен из улазног тока и враћа његов тип.
ловЦасеМоде() Одређује да ли се токени речи аутоматски претварају у мала слова.
обичанЦхар() Одређује да се знак цх третира као обичан знак.
обичниЦхарс() Одређује да се сви знакови у опсегу од ниске до високе третирају као обични знакови.


Сада ћемо детаљно разговарати о свакој методи један по један:


1. цомментЦхар(): Овај метод се користи за одређивање карактера гл који почиње коментаром у једном реду и СтреамТокенизер не препознаје све знакове од овог знака до краја реда.

Синтакса:

јавни неважећи коментарЦхар(инт цх)

  • Параметар: Овај метод узима једну целобројну вредност гл након тога се сви ликови занемарују
  • Тип повратка: Овај метод не враћа ништа.

Пример:

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.

Напомена: Овај програм се неће успешно покренути јер датотека 'АБЦ.ткт' не постоји. Ако желимо да тестирамо код на систему, једноставно треба да креирамо име датотеке АБЦ.ткт.

Направите датотеку АБЦ.ткт са следећим садржајем који је наведен у наставку:

Програмери 1 2 3 Геекс Здраво, програм је објашњен овде пријатељи моји.


2. линија(): Овај метод враћа тренутни број линије који обрађује СтреамТокенизер. Овај метод је веома користан када желимо да проверимо како обрада функционише, отклањамо грешке у програму и такође можемо да пратимо бројеве линија током времена токенизације.

Синтакса:

публиц инт линен()

  • Параметар: Овај метод не узима ниједан параметар.
  • Тип повратка: Овај метод враћа инт вредност број линије тренутног улазног тока.

Пример:

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. тоСтринг(): Овај метод враћа стринг који представља тренутни токен токена са вредношћу токена и бројем линије који тренутно користи.

Синтакса:

јавни стринг тоСтринг()

  • Параметар: Овај метод не узима ниједан параметар.
  • Тип повратка: Овај метод враћа вредност стринга која представља тренутни токен тока са бројем линије.

Пример:

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. еолИсСигнифицант(): Овај метод не враћа ништа, али се користи за проверу да ли ЕОЛ (Енд оф Лине) карактер треба да буде токенизован. Ако је заставица тачна, онда се сваки знак на крају реда третира као токен и додељује му се тип токена ТТ_ЕОЛ, а еол карактер се игнорише третира се као размак.

Синтакса:

публиц воид еолИсСигнифицант(боолеан флаг)

  • Параметар: Овај метод узима логички застава ако је то тачно, онда се знак на крају реда третира као токен или се игнорише као размак.
  • Тип повратка: Овај метод не враћа ништа.

Пример:

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

Напомена: Овај програм се неће успешно покренути јер датотека 'АБЦ.ткт' не постоји. Ако желимо да тестирамо код на систему, једноставно треба да креирамо име датотеке АБЦ.ткт.

Направите датотеку АБЦ.тккт са следећим садржајем који је наведен у наставку:

1 штребер 2 за 3 штребера


5. нектТокен(): Овај метод чита следећи токен из улазног тока и враћа тип. Тип токена се чува у ттипе поље. Враћа тип као целобројну вредност која може бити ТТ_ВОРД ТТ_НУМБЕР и ТТ_ЕОЛ итд.

Синтакса:

публиц инт нектТокен()

  • Параметар: Овај метод не узима ниједан параметар.
  • Тип повратка: Овај метод враћа инт вредност типа токена.

Пример:

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

Напомена: Овај програм се неће успешно покренути јер датотека 'АБЦ.ткт' не постоји. Ако желимо да тестирамо код на систему, једноставно треба да креирамо име датотеке АБЦ.ткт.

Направите датотеку АБЦ.ткт са следећим садржајем који је наведен у наставку:

1 Овај програм говори 2 о употреби 3 нект токен() методе


6. ловЦасеМод(): Овај метод узима логички застава вредност и проверава да ли токен треба аутоматски да се конвертује у мала слова. Ако је заставица тачна, све речи токена се конвертују у мала слова или се у супротном токени постављају онаквима какви јесу и не желе да их конвертују.

Синтакса:

публиц воид ловЦасеМоде (боолеан флаг)

  • Параметар: Потребно је боолеан застава вредност. Ако је тачно, сви токени се конвертују у мала слова, а ако је нетачно, неће бити конвертовани.
  • Тип повратка: Овај метод не враћа ништа.

Пример:

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

Напомена: Овај програм се неће успешно покренути јер датотека 'АБЦ.ткт' не постоји. Ако желимо да тестирамо код на систему, једноставно треба да креирамо име датотеке АБЦ.ткт.

Направите датотеку АБЦ.ткт са следећим садржајем који је наведен у наставку:

Здраво штреберци, ради се о ЛоверЦасеМоде ()


7. обичниЦхар(): Овај метод узима инт вредност гл треба третирати као карактер. Овим методом можемо лечити а карактера а као специјални знак као бројна реч или размак.

Синтакса:

публиц воид цоммонЦхар(инт цх)

  • Параметар: Овај метод узима један инт гл вредност која ће се третирати као лик.
  • Тип повратка: Овај метод не враћа ништа.

Пример:

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

Напомена: Овај програм се неће успешно покренути јер датотека 'АБЦ.ткт' не постоји. Ако желимо да тестирамо код на систему, једноставно треба да креирамо име датотеке АБЦ.ткт.

Направите датотеку АБЦ.ткт са следећим садржајем који је наведен у наставку:

Хелло Геекс Тхисссс Исссзз О цоммонЦхар() Овај метод је уклонио 'с' из целог тока


8. обичниЦхарс(): Овај метод специфицира да ће сви знакови у опсегу од ниског до високог (укључиво) бити третирани као обични знакови и након позивања ове методе, знакови више неће бити третирани као специјални знакови.

Синтакса:

публиц воид цоммонЦхарс(инт лов инт хигх)

  • Параметар: Овај метод узима две целобројне вредности ниско и високо ( инцлусиве) опсег карактера који се претвара у посебан знак.
  • Тип повратка: Овај метод не враћа ништа.

Пример:

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

Напомена: Овај програм се неће успешно покренути јер датотека 'АБЦ.ткт' не постоји. Ако желимо да тестирамо код на систему, једноставно треба да креирамо име датотеке АБЦ.ткт.

Направите датотеку АБЦ.ткт са следећим садржајем који је наведен у наставку:

Здраво Штребери Ово је о обичнихЦхарс()


Коришћење СтреамТокенизер-а за токенизацију текстуалне датотеке

СтреамТокенизер класа се такође користи за токенизацију текстуалне датотеке и овде користимо методе метода Токенизер класе.

1. корак: Прво направите текстуалну датотеку са .ткт проширење у истом основном директоријуму. Овде смо га креирали са именом Геекс.ткт .

ТектФиле



2. корак: Сада креирајте Јава датотеку и напишите код за токенизацију текстуалних података присутних у текстуалној датотеци.

Геекс.јава фајл:

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  ;             }         }         }      }      

Излаз:

ОутпутЕкампле


Структура фолдера:

ФолдерСтруцтуре


Следећи чланак  –  Јава.ио.СтреамТокенизер Цласс у Јави | Сет 2

Креирај квиз