- ベストアンサー
StringTokenizerを使用して、連続した区切り文字を見分ける方法
文字列を改行コードごとに区切り、Vectorに格納していきたいと思っています。 例) あ\r\nい\r\nう\r\nえ\r\nお\r\n という文字列を 「あ・い・う・え・お」と分けてVectorに格納する。 そこで、改行コードが連続してきた場合に「連続して改行コードがきた!!」ということが分かるようにVectorに格納したいと思っています。 例) あ\r\nい\r\nう\r\nえ\r\n\r\nお\r\n という文字列が来たら、「あ・い・う・え・☆・お」のような感じで、 連続して改行コードが来たら、何か特定の文字を詰めるなど。 どなたかいい方法を教えてください。 よろしくお願いします。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
大雑把なコードですけど (^^; 改行コードですからStringTokenizerよりもBufferedReaderを使ってみました。 String fix=""; String str="あ\r\nい\r\nう\r\nえ\r\n\r\nお\r\n"; try{ BufferedReader br=new BufferedReader(new StringReader(str)); String s=""; while((s=br.readLine())!=null){ if("".equals(s)){ fix=fix+"☆"; } else{ fix=fix+s; } } } catch(IOException e){ } System.out.println(fix);
その他の回答 (1)
- UKY
- ベストアンサー率50% (604/1207)
問題は、改行コードが \r と \n の2文字で一つの改行を表わしている点と、StringTokenizer クラスが「連続する区切り」に対応していない点です。 したがって、StringTokenizer クラスでは、あなたのやりたいことを実現させることは困難です。自前でプログラムを書くことをおすすめします。 例えばこんな感じです。(注: 正しく動くかどうかの確認はしてません) String str = "あ\r\nい\r\nう\r\nえ\r\n\r\nお\r\n"; String delim = "\r\n"; Vector v = new Vector(); int index1 = 0, index2; while ((index2 = str.indexOf(delim, index1)) >= 0) { v.add(str.substring(index1, index2)); index1 = index2 + 2; // 2 は delim の文字数。 } 改行コードはすべて \r\n であることを前提としたプログラムです。改行コードが連続しているところでは、空の文字列 "" が Vector に入ります。 あるいは、String クラスの split メソッドを使う方法も考えられます。 String str = "あ\r\nい\r\nう\r\nえ\r\n\r\nお\r\n"; String delim = "\r\n"; String[] result = str.split(delim); // 後は、result 配列の中の要素を Vector にコピーするだけです。
お礼
お礼が遅くなって申し訳ありません。 大変助かりました。。 splitメソッドを使用するのが簡単だと思って試したのですが、そのメソッドはありませんというエラーになってしまいました。 バージョンが違うのかもしれません。 いろいろなアイデアありがとうございました。
お礼
お礼が遅くなって申し訳ありません。 大変助かりました。。 文字列の分割はStringTokenizerだ!と決め付けていましたが、ほかにも方法があったのですね。 ありがとうございました。