Javaでは、 ストリームトークナイザー クラスが存在します java.io パッケージ 。入力ストリームを小さなチャンクに分割することで解析するために使用されます。 トークン これらのトークンにより処理が容易になります。トークンには、単語、数字、または特定の記号を指定できます。 Stream Tokenizer は、数字で囲まれた文字列とさまざまなコメント スタイルを認識できます。
StreamTokenizer クラスの機能:
StreamTokenizer クラスの主な機能を以下に示します。
- 入力ストリームを記号、単語、数字などのトークンに分割します。
- 行番号の追跡をサポートします。
- 行末文字をトークンとして扱うことができます。
- 単語トークンを自動的に小文字に変換することもできます。
StreamTokenizerクラスの宣言
StreamTokenizer クラスの宣言は次のとおりです。
public class StreamTokenizer extends Object 実装 Serializable
注記: Object を拡張し、Serializable を実装します。
StreamTokenizer クラスのコンストラクター
このクラスは 2 つのコンストラクターで構成されており、これらを使用すると、さまざまな方法でこのクラスのオブジェクトを作成できます。このクラスで使用できるコンストラクターは次のとおりです。
1. StreamTokenizer(InputStream です): このコンストラクターは 廃止された 。これは、バイト ストリームからトークナイザーを直接作成する古い方法です。
avl ツリー
構文:
StreamTokenizer(InputStream)
注記: これは文字ではなくバイトで機能するため、お勧めできません。
2. StreamTokenizer(リーダーr): これは、テキストを適切に処理する文字ストリームを使用するトークナイザーを作成する最良の方法です。
構文:
StreamTokenizer(リーダー)
例:
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
Java StreamTokenizer メソッド
以下の表は、このクラスのメソッドを示しています。
| 方法 | 説明 |
|---|---|
| コメント文字() | 文字 ch が単一行のコメントを開始することを指定します。コメント文字から行末までのすべての文字は無視されます。 |
| ライン() | 入力ストリームの現在の行番号を返します。 |
| toString() | 現在のストリーム トークンの文字列表現と、それが発生する行番号を返します。 |
eolIsSignificant(ブール値フラグ) | 行末文字を重要なトークンとして扱うかどうかを決定します。 true の場合、行末文字がトークンとして返されます。 |
| 普通のChar(int ch) | 文字 ch を単語番号やコメント文字としてではなく、通常の文字として扱うことを指定します。 |
| nextToken() | 入力ストリームから次のトークンを解析し、その型を返します。 |
| lowerCaseMode() | 単語トークンを自動的に小文字に変換するかどうかを決定します。 |
| 普通のChar() | 文字 ch を通常の文字として扱うことを指定します。 |
| 普通の文字() | 低位から高位までの範囲内のすべての文字が通常の文字として扱われることを指定します。 |
ここでは、各方法について 1 つずつ詳しく説明します。
1. コメント文字(): このメソッドは文字を指定するために使用されます チャンネル これは単一行コメントで始まり、この文字から行末までのすべての文字は StreamTokenizer によって認識されません。
構文:
public void commentChar(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. line(): このメソッドは、StreamTokenizer によって処理される現在の行番号を返します。この方法は、プログラムのデバッグ時に処理がどのように動作するかを確認したい場合に非常に便利で、トークン化の際に行番号を追跡することもできます。
1ヶ月は何週間ですか
構文:
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 (行末) 文字をトークン化する必要があるかどうかを確認するために使用されます。フラグが true の場合、各行末文字はトークンとして扱われ、トークン タイプ TT_EOL が割り当てられます。eol 文字は無視され、空白として扱われます。
構文:
public void eolIsSignificant(ブールフラグ)
- パラメータ: このメソッドはブール値を受け取ります フラグ true の場合、行末文字はトークンとして扱われるか、空白として無視されます。
- 戻り値の型: このメソッドは何も返しません。
例:
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 を作成します。
ターボC++のダウンロード
1 オタク 2 3 オタク
5. nextToken(): このメソッドは、入力ストリームから次のトークンを読み取り、タイプを返します。トークンのタイプは、 タイプ 分野。 TT_WORD、TT_NUMBER、TT_EOL などの型を整数値として返します。
構文:
public int nextToken()
- パラメータ: このメソッドはパラメータを取りません。
- 戻り値の型: このメソッドは、 整数 トークンタイプの値。
例:
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 に、next token() メソッドの使用について通知します。
6. lowerCaseMod(): このメソッドはブール値を受け取ります フラグ 値を調べて、トークンを自動的に小文字に変換する必要があるかどうかを確認します。フラグが true の場合、トークンのすべての単語が小文字に変換されます。そうでない場合、トークンはそのまま設定され、変換されません。
構文:
public void lowerCaseMode(ブールフラグ)
- パラメータ: ブール値が必要です フラグ 価値。 true の場合はすべてのトークンが小文字に変換され、false の場合は変換されません。
- 戻り値の型: このメソッドは何も返しません。
例:
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 というファイル名を作成するだけです。
Javaの文字列.値
以下に示す内容を含むファイル ABC.txt を作成します。
こんにちはオタク、これは LowerCaseMode() についてです
7. 普通のChar(): このメソッドは int 値を受け取ります チャンネル キャラクターとして扱うべきです。この方法を使用すると、 キャラクター ある 数字や空白などの特殊文字として。
構文:
public voidordinaryChar(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 を作成します。
Hello Geeks Thissss IssszzordinaryChar() について このメソッドはストリーム全体から 's' を削除します
8. 普通のChars(): このメソッドは、低位から高位までの範囲 (両端を含む) のすべての文字が通常の文字として扱われることを指定し、このメソッドを呼び出した後、文字は特殊文字として扱われなくなります。
構文:
public voidordinaryChars(int low int high)
- パラメータ: このメソッドは 2 つの整数値を受け取ります 低い そして 高い ( 特殊文字に変換される文字の範囲。
- 戻り値の型: このメソッドは何も返しません。
例:
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 を作成します。
10mlをオンスに
こんにちは、Geeks これは、normalChars() についてです。
StreamTokenizer を使用してテキスト ファイルをトークン化する
StreamTokenizer クラスはテキスト ファイルのトークン化にも使用されます。ここでは Tokenizer クラス メソッドのメソッドを使用しています。
ステップ 1: まずテキストファイルを作成します 。TXT 拡張子は同じルートディレクトリにあります。ここでは、という名前で作成しました。 オタク.txt 。
ステップ 2: ここで Java ファイルを作成し、テキスト ファイル内に存在するテキスト データをトークン化するコードを記述します。
Geeks.java ファイル:
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 の Java.io.StreamTokenizer クラス |セット2