No.2ベストアンサー
- 回答日時:
以前作成した1行文字列をフィールド分割する関数ソースを載せておくので
参考にしてください。
もっといい方法があるのかもしれませんが、とりあえずここでは
一文字ずつ呼んでダブルクオートを削除し、又ダブルクオート内の
カンマはそのまま文字として使用するようにしてます。
面倒だったので文字内にダブルクオートを使用することは考慮に入れてません(^^;
ArrayList parsLine(String line){
ArrayList fields = new ArrayList();
if(line == null) return;
boolean isQuort = false; //ダブルコーテーション内フラグ
StringBuffer field = null;
for(int i=0;i<line.length();i++){
char code = line.charAt(i);
if(isQuort){
//ダブルクオート内
if(code == '\"'){
isQuort = false;
}
else{
if(field == null) field = new StringBuffer();
field.append(code);
}
}
else{
//ダブルクオート外
if(code == '\"'){
isQuort = true;
}
else if(code == ','){
if(field == null) field = new StringBuffer();
fields.add(field.toString());
field = null;
}
else{
if(field == null) field = new StringBuffer();
field.append(code);
}
}
}
if(field != null){
fields.add(field.toString());
}
return fields;
}
No.4
- 回答日時:
基本的には#3のkana-tanさんの方法でうまくいくと思うのですが,".." の中に ',' を含むような複雑な文字列を処理したい場合は,java.io.StreamTokenizer クラスを利用すると良いと思います。
このクラスには,quoteChar(int ch) というメソッドがあって,ch で指定した文字を引用符として解釈してくれます。この指定をしたあと,java.io.StreamTokenizer#nextToken() を使って次のトークンを読み込むと,<ch で指定した文字>の直後から,次に<ch で指定した文字>が現れる直前までを一つの文字列として読み込むことができます。
参考URL:http://java.sun.com/j2se/1.3/ja/docs/ja/api/java …
No.3
- 回答日時:
StringTokenizerクラスのコンストラクタの引数には、区切り文字を指定できます。
次のような、感じです。
(ソース中に"(ダブルクォート)を書いたので見にくくなってすみません)
String str = "\"This\",\"is\",\"a\",\"test\"";
StringTokenizer st = new StringTokenizer(str,"\",");
while(st.hasMoreTokens()){
System.out.println(st.nextToken());
}
結果は
This
is
a
test
と表示されます。
(APIドキュメントのStringTokenizerクラスの説明に記載されているソースを一部改変しました)
No.1
- 回答日時:
一般的かどうかはわかりませんが、
私の場合は jakartaのOROライブラリ(正規表現ライブラリ)
を使って置換しています。
Perlと同じようにsコマンドで置換できます。
outStr = perl.substitute("s/\"//g", inStr);
みたいな感じ。
正規表現ライブラリの使い方については
JavaWorld 2001/4月号にも載っています。
参考URL:http://jakarta.apache.org/oro/index.html
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
映画のエンドロール観る派?観ない派?
映画が終わった後、すぐに席を立って帰る方もちらほら見かけます。皆さんはエンドロールの最後まで観ていきますか?
-
フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
あなたが普段思っている「これまだ誰も言ってなかったけど共感されるだろうな」というあるあるを教えてください
-
映画のエンドロール観る派?観ない派?
映画が終わった後、すぐに席を立って帰る方もちらほら見かけます。皆さんはエンドロールの最後まで観ていきますか?
-
海外旅行から帰ってきたら、まず何を食べる?
帰国して1番食べたくなるもの、食べたくなるだろうなと思うもの、皆さんはありますか?
-
天使と悪魔選手権
悪魔がこんなささやきをしていたら、天使のあなたはなんと言って止めますか?
-
javaのCSVデータ読込についてです
Java
-
カンマ区切りのCSVファイルから"を削除したい
その他(プログラミング・Web制作)
-
ダブルクォーテーションの削除(置換)
Perl
-
-
4
Excelでcsvやtxtで保存する時にダブルクォートが勝手に付く
Excel(エクセル)
-
5
ダブルクォーテーションのreplaceの方法
JavaScript
-
6
count(*)で取得した値をJAVAの変数に代入するには?
Java
-
7
csvファイルを2次元配列に格納
Java
-
8
【正規表現に詳しい方】ダブルクォーテーションで囲まれたCSVを作る方法Part2
その他(ソフトウェア)
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・人生のプチ美学を教えてください!!
- ・10秒目をつむったら…
- ・あなたの習慣について教えてください!!
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・【大喜利】【投稿~9/18】 おとぎ話『桃太郎』の知られざるエピソード
- ・街中で見かけて「グッときた人」の思い出
- ・「一気に最後まで読んだ」本、教えて下さい!
- ・幼稚園時代「何組」でしたか?
- ・激凹みから立ち直る方法
- ・1つだけ過去を変えられるとしたら?
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
「タイプ初期化子が例外をスロ...
-
【JAVA】与えられた金額を貨幣...
-
連続する「\\」をひとつの「\\...
-
0除算の例外処理ができない!!...
-
file操作時のエラー
-
VB.Net Object型 空かどうか
-
Javaにて負の符号付整数を表現...
-
基本的にはないと言われました
-
String型の日付(2005/11/25)の...
-
VB.NETで16進数が正しいかどう...
-
nullで、return出来るのはどん...
-
Timestamp型への変換について(J...
-
サーブレットからJSPの呼び出し...
-
Excelでのエラー
-
C#の捕捉されない例外処理の対...
-
サーブレットとJSPの連携
-
WebClient()以外でネットにアク...
-
エクセルVBAで、条件に一致する...
-
変数名の付け方
-
private static という変数の修飾
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
「タイプ初期化子が例外をスロ...
-
VB.NETで16進数が正しいかどう...
-
VB.Net Object型 空かどうか
-
Timestamp型への変換について(J...
-
C#の捕捉されない例外処理の対...
-
時間の取得
-
VBA Evaluate関数 型が一致しま...
-
C# UriFormatExceptionの回避
-
連続する「\\」をひとつの「\\...
-
文字列からダブルクオートの削除
-
String型の日付(2005/11/25)の...
-
タトゥーや墨を入れる人の共通点
-
VBA 400エラー 1004エラー
-
nullで、return出来るのはどん...
-
VC++におけるCStringの変換
-
例外ってIf文の中に入れますか...
-
【JAVA】与えられた金額を貨幣...
-
全角スペースのチェックについて
-
ファイルダイアログを開いた時...
-
WebClient()以外でネットにアク...
おすすめ情報