- PR -

StringTokenizerを使ってダブルコーテーションを取り除く方法

投稿者投稿内容
kazurock
常連さん
会議室デビュー日: 2005/01/24
投稿数: 40
投稿日時: 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++;
}

こんな感じでカンマを取り除くロジック同様にダブルコーテーションを取り除くことは可能なのでしょうか??
   
K
大ベテラン
会議室デビュー日: 2004/04/07
投稿数: 174
投稿日時: 2005-03-11 14:05
質問の意味はよくわかりませんが、とりあえず自分で実行してみたのですか?
kazurock
常連さん
会議室デビュー日: 2005/01/24
投稿数: 40
投稿日時: 2005-03-11 14:12
引用:

mogeさんの書き込み (2005-03-11 14:05) より:
質問の意味はよくわかりませんが、とりあえず自分で実行してみたのですか?



返信ありがとうございます。
先ほど書いたソースにはカンマを取り除いていると記してあるはずですが・・・
カンマを取り除いてるこのようなソース同様にダブルコーテーションを取ることは出来るのか聞きたいのです。
実行したかどうかではなく
StringTokenizer(voi_line, ",", true);
この部分が
StringTokenizer(voi_line, """, true);
このようにダブルコーテーション3つ続いてしまい最初の2つのダブルコーテーションで1つの空の文字列とみなされてしまいます。
おわかりいただけたでしょうか??
aki
常連さん
会議室デビュー日: 2004/09/17
投稿数: 23
お住まい・勤務地: 東京・神奈川
投稿日時: 2005-03-11 14:31
こんにちわ

stVoi = new StringTokenizer(voi_line,"\"", true);
のように\でエスケープすれば大丈夫ですよ。
yuzy
大ベテラン
会議室デビュー日: 2002/02/14
投稿数: 117
投稿日時: 2005-03-11 14:33
JDK5.0なら下記のCode Tipsが参考になると思います。

http://java.sun.com/developer/JDCTechTips/2005/tt0308.html#2
想馬
大ベテラン
会議室デビュー日: 2003/05/29
投稿数: 245
お住まい・勤務地: 神奈川・東京
投稿日時: 2005-03-11 14:44
引用:

kazurockさんの書き込み (2005-03-11 14:12) より:
StringTokenizer(voi_line, """, true);
このようにダブルコーテーション3つ続いてしまい最初の2つのダブルコーテーションで1つの空の文字列とみなされてしまいます。
おわかりいただけたでしょうか??


普通にエスケープシーケンスを使えばその問題は解決します。

ひとつ疑問なんですが、StringTokenizerの区切り文字にカンマを
指定しているのに、分解された文字列に対してequalsIgnoreCaseを使ってカンマと比較するのって
何の意味があるのでしょうか?
kazurock
常連さん
会議室デビュー日: 2005/01/24
投稿数: 40
投稿日時: 2005-03-11 14:56
引用:

想馬さんの書き込み (2005-03-11 14:44) より:
引用:

kazurockさんの書き込み (2005-03-11 14:12) より:
StringTokenizer(voi_line, """, true);
このようにダブルコーテーション3つ続いてしまい最初の2つのダブルコーテーションで1つの空の文字列とみなされてしまいます。
おわかりいただけたでしょうか??


普通にエスケープシーケンスを使えばその問題は解決します。

ひとつ疑問なんですが、StringTokenizerの区切り文字にカンマを
指定しているのに、分解された文字列に対してequalsIgnoreCaseを使ってカンマと比較するのって
何の意味があるのでしょうか?


返信ありがとうございます。
解決しました。
分解された文字列に対してequalsIgnoreCaseを使ってカンマと比較しているのはデータの関係上有効なトークンをテーブルに入れるのに使っています。
多少はしょって記入してしまったので・・・。
また、わからない事があったらお願いいたします。
想馬
大ベテラン
会議室デビュー日: 2003/05/29
投稿数: 245
お住まい・勤務地: 神奈川・東京
投稿日時: 2005-03-11 15:14
引用:

kazurockさんの書き込み (2005-03-11 14:56) より:
引用:

想馬さんの書き込み (2005-03-11 14:44) より:
引用:

kazurockさんの書き込み (2005-03-11 14:12) より:
StringTokenizer(voi_line, """, true);
このようにダブルコーテーション3つ続いてしまい最初の2つのダブルコーテーションで1つの空の文字列とみなされてしまいます。
おわかりいただけたでしょうか??


普通にエスケープシーケンスを使えばその問題は解決します。

ひとつ疑問なんですが、StringTokenizerの区切り文字にカンマを
指定しているのに、分解された文字列に対してequalsIgnoreCaseを使ってカンマと比較するのって
何の意味があるのでしょうか?


返信ありがとうございます。
解決しました。
分解された文字列に対してequalsIgnoreCaseを使ってカンマと比較しているのはデータの関係上有効なトークンをテーブルに入れるのに使っています。
多少はしょって記入してしまったので・・・。
また、わからない事があったらお願いいたします。


返信ありがとうございます。
実はStringTokenizerの第3引数にtrueを指定すると、区切り文字を含んだ文字列を返す仕様を忘れたうえでの質問でした。
お手数おかけして申し訳ありません。
余計なことかもしれませんが、StringTokenizer#nextToken()はStringを返却するのでtoString()は無くても良いと思います。

スキルアップ/キャリアアップ(JOB@IT)