• 締切済み

Fileから文字列を抜き出したい

CGIのプログラムで行ったほうがいいに決まっていますが、JavaScript で行うことを前提にした質問です。 下記の構造をしているファイルAから、各行の先頭の文字列 を抜き出して、引数で与えた文字列と一致するかチェックした いのです。 例えば、ファイルAの構造が区切り、|で  ”ローソン”|”ワイン”|”450”  ”サークルK”|”日本酒”|”180”  ”セブンイレブン”|”ワイン”|”430” となっており引数がセブンイレブンの時、3行目に一致する ので、TRUEを返す関数を作りたいのです。

みんなの回答

  • NTJ
  • ベストアンサー率44% (46/103)
回答No.2

まず前提として、「ファイル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かと(笑

myfrend
質問者

お礼

ファイルのオープン等の処理が難しいです。 回答ありがとうございました。

  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.1

これはクライアントサイドのjavascriptをイメージ していますか? もしファイルAがスクリプトを意識した作りになって いるならプログラムの一部として取り込むことはできる でしょうけどそもそもjavascriptには外部ファイルに アクセスする標準手法はありません。 ajaxでアクセスしてみてはいかがでしょうか?

myfrend
質問者

お礼

ajax調べてみます。ありがとうございました。

関連するQ&A

  • pythonで、文字列を引数にして

    例えば >>> a='1' >>> a.isalnum() True これを、文字列'isalnum'を引数にしてTrueを得られませんか。 たとえば >>> a='1' >>> a.item('isalnum')() True 上は、希望通りには動作しません。

  • エクセルの文字列の検索に関して

    以下の画像を参照して欲しいのですが、 簡潔に言うと、 Cの文字が先頭に入っている文字列をA2からA1946までの間で探し出してその文字列の2文字目と3文字目をDのセルに格納したいです。 画像ではDせるにはきちんと入っていますが、これは手作業でしたのでこの作業を関数でできないかなと思いまして。 なにせ漢字は1945文字ありますので… お願いします。 ちなみに例えばC1の文字をA1からA1946と比べて、A67の先頭と一致した場合、A67の2文字目と3文字目をD1に出力といった具合です。

  • 「,」区切りのcsvファイルを検索して文字列抽出したい

    環境:windows2000 csvファイル形式: pat,\path1\path2,\path\path3 pat_a,\path4\path5,\path7\path8 pat_a,\path7\path6,\path8\path9 バッチファイルに引数%A%を渡してcsvファイルを検索します。 検索文字列は引数%A%です。一行目に検索しようとする文字列があると それを%%Jにset してあげます。最後に渡された引数とセットされた文字列が同じであればOKです。 自分で考えたのですがなかなかうまくいきません。 みなさまのご教授おねがいします。 FOR /F "tokens=1 delims=," %%l in ('findstr /R "%1" rrr.csv') do set palam=%%l echo "渡された引数 [%1] " echo "セットされた文字列 [%palam%] " if "%palam%" NEQ "%1" ( goto :erro_end ) 引数は「pat」を渡したのですがセットされた文字列が「pat_a」 になってしまうんです。

  • コンビニデザートについて

    真面目に悩んでいます。是非とも教えてください。 コンビニデザートが本当にやめられずこまっています。 体調面はもちろん、最近は家計を圧迫しています。 体にも大変悪いのに、毎朝毎晩千円近く、毎週新商品が出ては、セブンイレブン、ローソン、ファミリーマート、サークルKをはしごし、買いあさっている状態です。 自粛したいのですが意志が弱くだめです。 最近職場や自宅の回りにボコボココンビニがたちはじめ、毎晩毎朝のようにしかよっています。 コンビニが企画するデザート以外にも新しいプリンとかに目がなく、本当にひどいんです そこで、自分の中で、せめてコンビニ2つに絞り、それ以外は立ち寄らない、買わないを心がけてみようと思いました。 すべては難しいので… ちなみに自宅近くには、セブンイレブン、サークルK、ファミリーマートがあり、会社近辺にはサークルK、セブンイレブン、ローソンがあります。 個人的にはローソンとセブンイレブンのコンビニデザートが美味しい印象ですが、ファミリーマートやサークルKも負けていないと思います。 コンビニデザートを選ぶならどこでしょうか?

  • バッチファイルでファイル名に文字列を挿入したい。

    フォルダにあるファイル全てに対して、ファイル名の先頭に文字列を挿入するバッチファイルを作っています。 対象のファイルは、主にエクセル、ワード、パワーポイント、PDFですが、ファイルの種類に関係なく、全てのファイルに対して、ファイル名の先頭に文字列を挿入したいです。 @echo off for %%i in (*) do ren "%%i" "【文字列】%%i" pause として文字列の挿入自体はできました。 しかし、このファイルを2回実行すると、ファイル名の先頭に【文字列】【文字列】と重複して挿入されてしまうので、すでに挿入済みのファイルに対しては実行しないようにしたいのですが、うまくいきません。 また、サブフォルダ内にあるファイルに対しても同様の処理を適用したいです。 どのように記述すればよいでしょうか。 リネームソフトを使えればよいのですが、フリーソフト等はインストールできない環境ですので、できればバッチファイルを記述して対応したいのです。 OSはウインドウズ7です。

  • MySQL区切った文字列で外部結合はできない?

    MySQLの外部結合について教えてください 「結合の対象となっているカラムの値が一致」は必須なのでしょうか? ■やりたいこと ・Aテーブルaカラム内にある「デリミタの先頭文字列」を抽出して、Bテーブルのidカラムと結合したい ■最終的にやりたいこと ・上記一致条件で、両テーブルデータをSELECTしたい ■試したこと ・「SELECT SUBSTRING_INDEX」で「デリミタの先頭文字列」を抽出できたのですが、そこで行き詰まりました ■質問 ・そもそもやろうとしていることが無謀なのでしょうか? ・テーブル構成を見直した方が良いのでしょうか?

    • ベストアンサー
    • MySQL
  • スペースを含んだ文字列から文字列の抽出

    エクセルバージョン2007 スペースを含む文字列で、A列に文字列がある時、以下の式を組んで文字列を抽出しています。 先頭にIDの数字が有る場合は、それぞれの目的に合った文字列を抽出しています。 B1=LEFT(A1,SEARCH(" ",A1,1)-1) C1=LEFT(MID(A1,SEARCH(" ",A1,1)+1,LEN(A1)-SEARCH(" ",A1,1)),SEARCH(" ",MID(A1,SEARCH(" ",A1,1)+1,LEN(A1)-SEARCH(" ",A1,1)),1)-1) 3 3df-32654-10 CCCCHH 10 1ab-12345-00 AAABBBB この文字列の場合、B列に3と10が表示、C列に 3df-32654-10 1ab-12345-00が表示されます。 先頭に、IDの無い文字列は以下の様な構成です。 6rt-95132-00 PPPKKK この文字列の場合、B列に6rt-95132-00、C列にPPPKKKが表示されてしまい、この場合、IDの数字が無い場合はB列には表示させない又は、C列に6rt-95132-00させたいと思っています。 ご教授頂ければ幸いです。 以上、宜しくお願い致します。

  • ファイルの途中に文字列を挿入

    こんにちは。プログラミング初心者で、初めて質問させていただきます。勉強中に思ったのですが、 ファイルの書き込みについてなのですが、あるファイルに既にデータがあり、その先頭部分(あるいは途中)にある文字列を追加挿入しなければならなくなった場合どういった処理をすることになるのでしょうが? fseekなどで場所を指定して書き込んでしまうと、そこの文字列が上書きされてしまうと思うのですが。

  • ワードで各行の先頭に文字列を追加する方法

     ワードで、各行の先頭に文字列(例えば「あいうえお」)を追加する方法をご存じでしたら教えて頂けませんか。よろしくお願いします。 (例) ●●●●●●●● ×××× ▲▲▲▲▲ ■■■■■■ ↓ あいうえお●●●●●●●● あいうえお×××× あいうえお▲▲▲▲▲ あいうえお■■■■■■

  • コンビニのトイレを使ったことある人に質問です。

    コンビニのトイレを使ったことある人に質問です。 これまでセブンイレブン・ファミリーマート・ローソン・サークルK・サンクス・ミニストップ、どのコンビニのトイレを使ったことありますか??

専門家に質問してみよう