前のセクションでは、String クラスの split() メソッドを使用して文字列を分解する方法を学習しました。このセクションでは、split() メソッドとは異なり、 StringTokenizerオブジェクトを使用して文字列を分解する方法を学習します。区切り記号として正規表現を使用しません。
まず第一に、概念を知る必要があります -言語シンボル. いわゆる言語シンボルとは、文字列を分析するときに文字列を独立して使用できる単語に分解することを意味し、これらの単語は言語シンボルと呼ばれます。
たとえば、「どういたしまして」という文字列の場合、文字列の区切り記号としてスペースが使用されている場合、文字列には 3 つの単語、つまり 3 つの言語記号が含まれます。文字列「You, are, welcome」の場合、カンマが文字列の区切り記号として使用されている場合、文字列には 3 つの言語記号も含まれます。
文字列を分析し、その文字列を独立して使用できる単語に分解する場合、java.util パッケージの StringTokenizer クラスを使用できます。このクラスには、よく使用される 2 つのコンストラクターがあります。
デフォルトの区切り記号、つまりスペース文字 (複数のスペースが 1 つのスペースとしてみなされる)、改行文字、復帰文字、タブ文字、および送り文字を区切り記号として使用して、文字列 s のパーサーを構築します。
文字列 s のパーサーを構築します。パラメータdelim内の文字は区切り文字として使用されます。
注: 区切り文字をどのように組み合わせても、区切り文字として扱われます。
例えば:
StringTokenizerfenxi=newStringTokenizer(あなたはようこそ);StringTokenizerfenxi=newStringTokenizer(あなたは;ようこそ,,;);
StringTokenizer オブジェクトを文字列アナライザーとして呼び出します。アナライザーは nextToken() メソッドを使用して、文字列内の言語記号を 1 つずつ取得できます。そのたびに、次の言語記号が文字列内に取得されます。言語記号が取得されると、文字列アナライザーのカウント変数の値は自動的に 1 減算されます。カウント変数の初期値は、文字列内の単語の数に等しくなります。
通常、 while ループを使用して言語シンボルを 1 つずつ取得します。ループを制御するには、文字列 (値) に言語シンボルが存在する限り、StringTokenizer クラスの hasMoreTokens() メソッドを使用できます。 count 変数の値が 0 より大きい場合、このメソッドは true を返し、それ以外の場合は false を返します。さらに、いつでもアナライザーに countTokens() メソッドを呼び出して、アナライザーの count 変数の値を取得させることができます。
例えば:
importjava.util.*;publicclassMain{publicstaticvoidmain(Stringargs[]){Strings=welcometodotcpp(Thankyou),nicetomeetyou;StringTokenizerfenxi=newStringTokenizer(s,(),);intnumber=fenxi.countTokens();while(fenxi.hasMoreTokens() ){Stringstr=fenxi.nextToken();System.out.print(str+);}System.out.println(総単語数: +number+);}}
実行結果は次のとおりです。
ようこそtodotcppありがとうございます、また会いましょう総単語数: 9