• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:ダブルクォーテーション付きの文字列を含むファイルを読み込む方法?)

ダブルクォーテーション付きの文字列を含むファイルを読み込む方法

このQ&Aのポイント
  • Visual Basic 2008 Express Editionを使用して、ダブルクォーテーション付きの文字列を含むファイルを読み込む方法について教えてください。
  • 保存されたファイルには、時間と文字列が記録されています。しかし、文字列にダブルクォーテーションが含まれているため、正しく読み込めません。
  • ダブルクォーテーションを含む文字列を扱う方法について、具体的な処理方法を教えてください。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.4

あの?。聞きたいんだけど。 最終的な結論から言うと、どうもウエーブのページを時刻とページ内容を対にして 保存しているみだいですね。一種のログファイル的な考え方と思っていいですか?。 その時にウエーブのページの内容によって ファイルに保存した時に vbCrLf が入る みたいで、それで今度読み込みする時に困るとの事。vbCrLf が途中に入っていな いなら、私の答えた内容で綺麗に読めるはずです。 FileOpen(1, "C:\sbj\aaaa.txt", OpenMode.Input) Do While Not EOF(1)   time=Input(1)       こちらを Input で   moji=lineInput(1)     こちらを LineInput で Loop そこで、ウエーブのページを保存する時にvbCrLfが入らない様にすればいいのだけど。 ここで考えられるのは、ダブルクォーテーションがついている内容を保存した変数を ファイルに書き込む時に、VBが勝手にvbCrLf をつけて保存する事はないと思うが?。 恐らく想像だが、ダブルクォーテーションがついている内容を保存した変数をファイル に書き込む時点でvbCrLfがつくのではなくて、ファイルに書き込む以前に、既に そのダブルクォーテーション文字を含んだ変数の中にvbCrLfの文字があるのでは?。 書き込む前に変数にvbCrLfがあれば、vbCrLfも同時に書き込まれます。 本来、ウエーブページの内容は、vbCrLfがページ内に含まれていても、無視されて 改行しない様になっており、ウエーブページの改行は<br>だった様に思う。 むしろ、ウエーブページの内容はいたる所にvbCrLfが入っている可能性が大であり 、いくら入っていてもウエーブページにはなんら差し支えない様に出来ています。 それ故、ウエーブページの内容を時刻と対に保存する時は、保存する前にウエーブページ の保存してある変数から、vbCrLfを取り除いて保存するのが普通です。 そうでないとvbCrLfがどこに入るか分からなく、その後の読み込んで操作するプログラム の方で大変難しくなるからです。 ファイルに保存する前に 保存する変数を  変数=replace(変数,vbCrLf,"") として vbCrLf を取り除いて保存すれば vbCrLf は途中に入らない様に思うのですが?。一度試して頂けますか?

liefu
質問者

お礼

変数=replace(変数,vbCrLf,"") とすると、 改行がなくなり無事読み込むことができました。 私の質問に長くお付き合いしていただきありがとうございました。またよろしくお願いします。

その他の回答 (3)

回答No.3

ダブルクォーテーション付きの文字列を含むファイルを読み込む方法はとなっているので それなら、 FileOpen(1, "C:\sbj\aaaa.txt", OpenMode.Input) Do While Not EOF(1)   time=Input(1)       こちらを Input で   moji=lineInput(1)     こちらを LineInput で Loop でよいですと伝えています。ただし #2008-08-31 10:21:05#, 文字列(ダブルクォーテーションを含む) vbCrLF の形でファイルに保存されていないといけないが、上の形でファイルの中が落ちていないのですか? サンプルのデータは #2008-08-31 10:21:05# , "この記事に関するコメントを投稿するには、下のボタンをクリックしてください。投稿フォームが表示されます。通常のご質問、ご意見等は<A href=""/vb/bbs/index.html"">掲示板</A>へご投稿ください。 で、  #2008-08-31 10:21:05#,"この記事・・・ご意見等は<A vbCrLf  <===ここで改行  href=""/vb/bbs/index.html"">掲示板</A>へご投稿ください。  と文字列の途中で改行文字が入っていますが、この改行文字をどうこうするとの事なのですか? 上の読み込むファイルを作るソースがどの様になっているのかわかりませんが、 それは、元の読み込むファイルを作るソースの問題ではないのですか?。 質問内容からは、ダブルクォーテーション付きの文字列を含むファイルを読み込む方法はとなっているので その様に答えていますが。 それなら、質問内容は、ファイルを書き込む時に ダブルクォーテーションを含む文字列を書き込む時に 途中で改行文字が入るのを入らない様にしたいとの事ではないのですか?。

liefu
質問者

補足

ご回答ありがとうございます。 ご指摘の通り、WriteLineで時間(Date型)、文字列(String型)を保存していますが、テキストファイルを開いてみると、途中に改行文字が多く入っていました。 質問当初は、改行文字が入っていることには気づかず、input関数で読み込もうとしていましたので、いつもダブルクォーテーションのところでエラーが起こっていました。

回答No.2

時間と文字の2項目で読みたいことですか? それなら下の内容でどうですか?。 FileOpen(1, "C:\sbj\aaaa.txt", OpenMode.Input) Do While Not EOF(1)   time=Input(1)       こちらを Input で   moji=lineInput(1)     こちらを LineInput で Loop

liefu
質問者

補足

ウェブページのinnerHTMLを抜き出して文字列変数に入れていますが、テキストファイルに保存した段階で、改行文字が途中で書き込まれてしまうようで、それでうまくいきません。 以前教えていただいたlininput(1)だけで読み取りをしても、うまくいかなくなってしまいました。前はうまくいっていたような気もしましたが。

回答No.1

行単位で読み込みすれば、そのままダブルクォーテーション も読み取れます。 FileOpen(1, "C:\sbj\aaaa.txt", OpenMode.Input) Do While Not EOF(1)   cm=lineInput(1)   cm=lineInput(1) Loop

liefu
質問者

補足

ご回答ありがとうございます。 試してみましたところ、行単位で読み取れました。 ただ、質問分が少し曖昧だったため、少し目的のこととは違いました。  時間と文字列の配列をファイルに保存して、読み込むときもまた2つの変数に分けて読み込みたいと思っています。  ためしに、Writeで書き込んで、Inputで読み込んでみましたが、やはりダブルクォーテーションが含まれるとうまくいきませんでした。  また、回答文ではcm=linInput(1)を2行記されていますが、これは誤植だと思っていますがどうでしょうか? よろしくお願いします。

関連するQ&A