映画のエンドロール観る派?観ない派?

文字列を改行コードごとに区切り、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 という文字列が来たら、「あ・い・う・え・☆・お」のような感じで、
連続して改行コードが来たら、何か特定の文字を詰めるなど。

どなたかいい方法を教えてください。
よろしくお願いします。

A 回答 (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);
    • good
    • 0
この回答へのお礼

お礼が遅くなって申し訳ありません。
大変助かりました。。

文字列の分割はStringTokenizerだ!と決め付けていましたが、ほかにも方法があったのですね。
ありがとうございました。

お礼日時:2003/10/01 23:45

問題は、改行コードが \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 にコピーするだけです。
    • good
    • 0
この回答へのお礼

お礼が遅くなって申し訳ありません。
大変助かりました。。

splitメソッドを使用するのが簡単だと思って試したのですが、そのメソッドはありませんというエラーになってしまいました。
バージョンが違うのかもしれません。

いろいろなアイデアありがとうございました。

お礼日時:2003/10/01 23:55

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!