とにかく、stringTokenizerの特定の(たとえば20番目の)要素に直接アクセスできますか?時々、私はそれから特定の要素だけを必要とし、他の要素を必要としません、それでも私はすべての要素を横断しなければなりません。
編集:私も空の要素を無視したいです。
私は何かが足りないのですか?
とにかく、stringTokenizerの特定の(たとえば20番目の)要素に直接アクセスできますか?時々、私はそれから特定の要素だけを必要とし、他の要素を必要としません、それでも私はすべての要素を横断しなければなりません。
編集:私も空の要素を無視したいです。
私は何かが足りないのですか?
String.split
の代わりに使用できますTokenizer
。
例えば:
String[] split = "you string is splitting".split(" ");
split[2]; // random access to the 3rd element of split
もちろん、split
サブインデックスにアクセスする前に、実際にその数の要素があることを確認する必要があります。
Apache Commons LangのStringUtilsクラスを試すことができます。このクラスは、空の要素を無視して文字列を処理しながら、文字列を分割できnull
ます。
トークナイザーは、どれがn番目のトークンであるかを判別するために、少なくともn個のトークンを読み取る必要があります。したがって、String#split()
またはを使用して文字列配列を作成する方が簡単な場合がありますStringUtils.split(...)
。
StringUtils.split(...)
空の要素が必要ない場合は返さないので、私が好むことに注意してください。つまり、StringUtils.split(",a,b,c;;d,e,,f",";,");
返され["a","b","c","d","e","f"]
ますString#split()
が、返されます。["","a","b","c","","d","e","","f"]
Tokenizerは、要素に順番にアクセスすることを目的としています(ちょっとLinkedList
)。すべてのトークンを調べて、それらをある種のランダムアクセスコレクション(ArrayList
)に格納するか、別の方法を使用して元の文字列/ストリームを分割する必要があります。