- 締切済み
Fileから文字列を抜き出したい
CGIのプログラムで行ったほうがいいに決まっていますが、JavaScript で行うことを前提にした質問です。 下記の構造をしているファイルAから、各行の先頭の文字列 を抜き出して、引数で与えた文字列と一致するかチェックした いのです。 例えば、ファイルAの構造が区切り、|で ”ローソン”|”ワイン”|”450” ”サークルK”|”日本酒”|”180” ”セブンイレブン”|”ワイン”|”430” となっており引数がセブンイレブンの時、3行目に一致する ので、TRUEを返す関数を作りたいのです。
- みんなの回答 (2)
- 専門家の回答
みんなの回答
- NTJ
- ベストアンサー率44% (46/103)
まず前提として、「ファイルAの内容」をブラウザ側へ送出する必要性があります。 #1さんのアドバイス通り、Ajaxの手法を利用しないと、JavaScriptからサーバー上のファイルへアクセスすることは非常に難しいでしょう。 送出するには、Aファイルの内容を単純に吐き出すCGIは必須と思われます。 吐き出す先は構造的に非表示としたTEXTAREAが妥当を思われます。 さて、クライアントサイドでの対応は、まず、TEXTAREA若しくは、Ajaxで受け取ったファイル内容を、改行コードで分割し、配列へ格納します。 次に配列分のループをさせ、ループ内でさらに各配列内容を区切り文字で分割し、その先頭文字が一致するか否かで判定可能です。 var fData=""; //なにかの方法でsDaraへ受信内容を収める。 function chkX(code,id){ var wk1=fData.split('\n'); for(var i in wk1){ var wk2=wk1[i].split('|'); if(wk2[id]==code) return true; } return false; } こんなものですね。 chkX('”セブンイレブン”',0) でセブンイレブンの存在チェックか可能です。 ・・・ただ・・・ 「やりたい処理の詳細な内容」によっては、もっと遥かに単純な方法も存在します。 単にその店が含まれているかどうかをチェックしたいだけなら、わざわざ分割して処理をしなくても、 fData.match(/”セブンイレブン”/) 一発でOKかと(笑
- yambejp
- ベストアンサー率51% (3827/7415)
これはクライアントサイドのjavascriptをイメージ していますか? もしファイルAがスクリプトを意識した作りになって いるならプログラムの一部として取り込むことはできる でしょうけどそもそもjavascriptには外部ファイルに アクセスする標準手法はありません。 ajaxでアクセスしてみてはいかがでしょうか?
お礼
ajax調べてみます。ありがとうございました。
お礼
ファイルのオープン等の処理が難しいです。 回答ありがとうございました。