CSV形式のデータファイルでコンマと文字列の間に空白が存在する場合に正常に動作しない場合がある
CSV形式のデータファイルで、カンマと文字列の間に空白が存在する場合には正常に動作しない場合がある。
例えば、以下のような不具合が生じる。
1.文字列の中にコンマが含まれている場合、例外が発生することがある。
X値、Y値、Tick Label を渡してスカラー型XYグラフを描画しようとして、 下記の行が含まれているデータファイルを読み込ませると、例外が発生する。
0.0,_0.1,_"a,""b"
ここで、アンダースコアは半角空白を表している。
Tick Label の表示内容に期待する結果は「a,"b」という文字列の表示である。
2.文字列を囲った二重引用符が存在する場合、文字列中に二重引用符が表示されてしまう。
例えば、下記の行が含まれているデータファイルを読み込ませた場合に発生する。
1.0,_0.5,_"abc"
Tick Label の表示内容に期待する結果は「abc」という文字列の表示であるが、実際には 「"abc"」という文字列が表示されてしまう。
3.文字列中にコンマが存在する場合、「This data file is invalid.」という内容のエラーメッセージがダイアログで表示される。
2.0,_1.5,_"a,b"
Tick Label の表示内容に期待する結果は「a,b」という文字列の表示である。
尚、いずれの不具合も、コンマと次の文字列との間に空白が存在しない場合には発生しない。
CSV文字列を解析するクラス SGCVSTokenizer の中で、コンマの次に空白が存在する場合に、その空白が存在しないものとして処理を行っていたため、これらの不具合が発生していました。
それらの空白をスキップする処理を追加することで、いずれの不具合も修正されました。
修正したソースコードはCVSにコミット済みです。
バージョン 2.0.0 のリリースに伴い close します。
CSV形式のデータファイルで、カンマと文字列の間に空白が存在する場合には正常に動作しない場合がある。
例えば、以下のような不具合が生じる。
1.文字列の中にコンマが含まれている場合、例外が発生することがある。
X値、Y値、Tick Label を渡してスカラー型XYグラフを描画しようとして、 下記の行が含まれているデータファイルを読み込ませると、例外が発生する。
0.0,_0.1,_"a,""b"
ここで、アンダースコアは半角空白を表している。
Tick Label の表示内容に期待する結果は「a,"b」という文字列の表示である。
2.文字列を囲った二重引用符が存在する場合、文字列中に二重引用符が表示されてしまう。
例えば、下記の行が含まれているデータファイルを読み込ませた場合に発生する。
1.0,_0.5,_"abc"
Tick Label の表示内容に期待する結果は「abc」という文字列の表示であるが、実際には 「"abc"」という文字列が表示されてしまう。
3.文字列中にコンマが存在する場合、「This data file is invalid.」という内容のエラーメッセージがダイアログで表示される。
例えば、下記の行が含まれているデータファイルを読み込ませた場合に発生する。
2.0,_1.5,_"a,b"
Tick Label の表示内容に期待する結果は「a,b」という文字列の表示である。
尚、いずれの不具合も、コンマと次の文字列との間に空白が存在しない場合には発生しない。