- - PR -
StringTokenizerを使ってダブルコーテーションを取り除く方法
| 投稿者 | 投稿内容 | ||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2005-03-11 14:01
stVoi = new StringTokenizer(voi_line, ",", true);
int row = 0; while (stVoi.hasMoreTokens()) { String tkVoi = stVoi.nextToken().toString(); if (tkVoi.equalsIgnoreCase(",")) { row++; } こんな感じでカンマを取り除くロジック同様にダブルコーテーションを取り除くことは可能なのでしょうか?? | ||||||||||||
|
投稿日時: 2005-03-11 14:05
質問の意味はよくわかりませんが、とりあえず自分で実行してみたのですか?
| ||||||||||||
|
投稿日時: 2005-03-11 14:12
返信ありがとうございます。 先ほど書いたソースにはカンマを取り除いていると記してあるはずですが・・・ カンマを取り除いてるこのようなソース同様にダブルコーテーションを取ることは出来るのか聞きたいのです。 実行したかどうかではなく StringTokenizer(voi_line, ",", true); この部分が StringTokenizer(voi_line, """, true); このようにダブルコーテーション3つ続いてしまい最初の2つのダブルコーテーションで1つの空の文字列とみなされてしまいます。 おわかりいただけたでしょうか?? | ||||||||||||
|
投稿日時: 2005-03-11 14:31
こんにちわ
stVoi = new StringTokenizer(voi_line,"\"", true); のように\でエスケープすれば大丈夫ですよ。 | ||||||||||||
|
投稿日時: 2005-03-11 14:33
JDK5.0なら下記のCode Tipsが参考になると思います。
http://java.sun.com/developer/JDCTechTips/2005/tt0308.html#2 | ||||||||||||
|
投稿日時: 2005-03-11 14:44
普通にエスケープシーケンスを使えばその問題は解決します。 ひとつ疑問なんですが、StringTokenizerの区切り文字にカンマを 指定しているのに、分解された文字列に対してequalsIgnoreCaseを使ってカンマと比較するのって 何の意味があるのでしょうか? | ||||||||||||
|
投稿日時: 2005-03-11 14:56
返信ありがとうございます。 解決しました。 分解された文字列に対してequalsIgnoreCaseを使ってカンマと比較しているのはデータの関係上有効なトークンをテーブルに入れるのに使っています。 多少はしょって記入してしまったので・・・。 また、わからない事があったらお願いいたします。 | ||||||||||||
|
投稿日時: 2005-03-11 15:14
返信ありがとうございます。 実はStringTokenizerの第3引数にtrueを指定すると、区切り文字を含んだ文字列を返す仕様を忘れたうえでの質問でした。 お手数おかけして申し訳ありません。 余計なことかもしれませんが、StringTokenizer#nextToken()はStringを返却するのでtoString()は無くても良いと思います。 | ||||||||||||
