• 締切済み

StringTokenizerで連続するデリミタ

よろしくお願いします。 今、半角スペース(デリミタ)で区切られたデータファイルから、 データを読み込むプログラムをStringTokenizer作ったのですが、 対象のデータがない時はデリミタ続きでファイルが作成されるので、 StringTokenizerではデリミタが連続してしまったものを飛ばして次のデータを読み込んでしまいます、 デリミタが続いても1つのデータとして取り出す方法はないでしょうか、 教えてください。 例)「this is a pen」 『a』と『pen』間に半角スペースが2個は入っていると、 this is a pen = StringTokenizer(str," ") => [this] [is] [a] [pen] と取って来てしまいますが、 実現したいのは 「this is a pen」なら[this] [is] [a] [] [pen]と『a』と『pen』間のデリミタ続きも1データとして認識してほしいのです。 よろしくお願いします。

みんなの回答

回答No.2

単純に1発でやるのは無理だと思います。 (私が無知なだけかもしれません。) >デリミタ続きも1データとして認識してほしいのです。 とありますが、 (以降、△、▲は半角スペースの意味) this△is△a△▲pen のデータは [this][is][a][▲pen] となるのではありませんか? △▲pen を見たとき、デリミタとして扱うのは△として▲はデータとして認識するなら、▲とpenの間にはデリミタとしての△がありませんので。 StringTokenizerには引数が3つで、デリミタ自身もデータとして扱うかどうか設定するフラグ付きのコンストラクタがありますので、 それで1度デリミタ付きで全データを取得して、その後に編集するしかないと思います。

  • thamansa
  • ベストアンサー率40% (95/232)
回答No.1

Stringクラスのsplitメソッドで代用できそうですので試してみてください。 String[] array = text.split(" ");

関連するQ&A