外部テキストをsplitで分割する方法と注意点

このQ&Aのポイント
  • 外部テキストをsplitで分割する方法として、以下のスクリプトを使用します。System.useCodepage = true; myText01 = new LoadVars(); txt_file01 = 'text/text001.txt'; myText01.load(txt_file01); _root.bp=t001 myText01.onLoad = function(ok) { if (ok) { work_txt = myText01._root.bp.split('~'); } } このスクリプトでは、外部テキストファイルをShift-JISエンコードとして読み込み、指定した行をtilde(~)で分割しています。
  • 分割処理がうまくいかない場合、以下の点を確認してください。1つ目は、外部テキストファイルのパスが正しく指定されているかどうかです。2つ目は、外部テキストファイルの読み込みが成功しているかどうかを確認する必要があります。3つ目は、指定した行が正しく分割されているかどうかを確認してください。
  • 初心者の方にはわかりづらいかもしれませんが、慣れてくると簡単に行えるようになります。外部テキストをsplitで分割することで、テキストの特定の行を取得したり、情報を整理することができます。
回答を見る
  • ベストアンサー

外部テキストをsplitで分割する時

宜しくお願いいたします。 外部テキストをsplitで分割しようと思うのですが・・。 スクリプトはこんな感じになっています。 System.useCodepage = true; // Shift-JISのテキストを読み込む設定に変更 myText01 = new LoadVars(); // 新規LoadVarsオブジェクトmyTextの作成 txt_file01 = "text/text001.txt"; // 外部テキストファイル名を変数txt_fileに代入 myText01.load(txt_file01); // 外部テキストファイルの読み込み _root.bp=t001 //変数 myText01.onLoad = function(ok) { if (ok) { // 外部テキストファイルを読み込んだときの処理 work_txt = myText01._root.bp.split("~"); と書いて、text/text001.txtというテキストのt001という行を"~"で分割したいのですが、うまくいきません・・・。 変数でオブジェクトを指定しているのが悪いと思うのですが、何か良い方法はありますか? 何分初心者なもので・・・。 説明がわかりづらいかもしれませんが、困ってしまっているので宜しくお願いいたします。

  • Flash
  • 回答数1
  • ありがとう数4

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

  • ベストアンサー
  • DPE
  • ベストアンサー率85% (666/776)
回答No.1

LoadVars で外部テキストを読み込んだ場合は、読み込んできた変数は LoadVars オブジェクトのものになっています。 例えば、text01.txt の中身が  bp=テスト だとします。 このテキストファイルを  //テキストの読み込み  myText01 = new LoadVars();  myText01.load( "text01.txt" ); というスクリプトで読み込むと、テキストファイルに書かれていた変数 bp が読み込まれます。 先述の通り、この変数は LoadVars オブジェクトである myText01 のものになりますから、参照する時は  myText01.bp このように書きます。 split を使うには、まず、String というクラス( Flash MX 以前はオブジェクトと呼ばれています)のオブジェクトを作ります。 split は、文字列に含まれる特定の文字を区切りの文字として文字列を分割する機能です。 例えば、”text”という名前のフォルダにあるテキストファイル text001.txt の内容が  bp=テスト1~テスト2~テスト3 このようになっているとします。 LoadVars でこのファイルを読み込み、” ~ ”で分割するスクリプトは、次のようになります。 このスクリプトはフレームに設定してください。 (↓各行頭に全角のスペースが入っています。コピーする際は、全て半角のスペースかタブに置き換えてください。このまま使うとシンタックスエラーになります)  //Shift-JISで読み込む  System.useCodepage = true;  //テキストファイル名の設定  txt_file01 = "text/text001.txt";  //テキストの読み込み  myText01 = new LoadVars();  myText01.load( txt_file01 );  //読み込み完了時の処理  myText01.onLoad = function( ok )  {   var str;   //読み込みが成功した場合   if( ok )   {    //読み込んだ文字列を操作するStringオブジェクトを作る    str = new String( myText01.bp );    //文字列を” ~ ”で分割    work_txt = str.split( "~" );   }  }; split で分割された文字列は、配列変数に1つずつ入ります。 上記の例ですと、  work_txt[ 0 ] → テスト1  work_txt[ 1 ] → テスト2  work_txt[ 2 ] → テスト3 となります。 ---------------------- > text/text001.txtというテキストのt001という行を"~"で ・・・ この部分が、よく分からないのですが。 Flash では、外部テキストは変数としてしか読み込めません。 とりあえず変数で読み込み、その後で、必要なら String クラスが持っている様々なメソッド(関数のようなもの)で加工するなどして利用します。 テキストファイルの中身が、例えば  bp=テスト1 テスト2 テスト3 t001○○○~△△△~□□□ このようになっていて、”t001”から先にある文字列を” ~ ”で分割したいとのことでしょうか? この場合ですと、まず、”t001”から先の文字列を取り出して新しい文字列を作り、それを split で分割するといった方法になるかと思います。 ”t001”から先の文字列を取り出すには、  ・”t001”の位置を調べて、その位置+4の位置から最後の文字までを抽出する  ・ split で”t001”を区切り文字に指定し、分割する などの方法があります。 ここでは後者の、split で分割する方法をご紹介します。 myText01.onLoad = function・・・の部分が、次のように変わります。  //読み込み完了時の処理  myText01.onLoad = function( ok )  {   var str , new_str , temp;   //読み込みが成功した場合   if( ok )   {    //読み込んだ変数を操作するStringオブジェクトを作る    str = new String( myText01.bp );    //”t001”の位置で分割し、新しい文字列を作る    new_str = str.split( "t001" );    //新しくできた文字列を” ~ ”で分割    temp = new String( new_str[ 1 ] );    work_txt = temp.split( "~" );   }  }; 元の文字列をまず”t001”で分割し、new_str という配列変数に入れると、  new_str[ 0 ] → テスト1 テスト2 テスト3  new_str[ 1 ] → ○○○~△△△~□□□ このようになります。 new_str[ 1 ] に入っている文字列が、今回の目的になります。これを split を使って” ~ ”で分割し、配列変数 work_txt に入れます。 work_txt の内容は  work_txt[ 0 ] → ○○○  work_txt[ 1 ] → △△△  work_txt[ 2 ] → □□□ となります。 長くなってすみませんでした。 不明な点がありましたら、補足してください。

groovers
質問者

お礼

御返事遅くなってしまってすみません。 丁寧にありがとうございます! 無事解決いたしました。

関連するQ&A

  • 外部テキストが読み込めません

    はじめまして FLASHをつい1週間まえからはじめました超初心者です。 こちらの過去ログをみてやってみたのですが、うまくいかなかったので質問させてください。 外部テキスト(test.txt)をLoadVarsクラスで読み込み、 その中の定義(text=…)をMC(インスタンス名はtext)に書き出したいのですが、何度やっても書き出せません。 アクションスクリプトは ――――――――――――――――― System.useCodepage = true; myLoadVars = new LoadVars(); myLoadVars.onLoad = function(bSuccess) { if (bSuccess) { _root.text = this.text; } }; myLoadVars.load("test.txt"); ―――――――――――――――― 以上のようになっています。 わかる方いましたらよろしくお願いします。 質問初めてですので、今後のためにも言葉が足りなかったりしたら遠慮なく突っ込んでください。

    • ベストアンサー
    • Flash
  • 読み込んだテキストを Split で分割する

    おはようごさいます。 過去の質問も色々拝見したのですが解決しなかったので、質問させていただきます。 以下の内容のテキストファイル、samp.txt を読み込み(改行コードはLFのみ)、 &txt = 123 456 789& それを split で改行で区切って、配列 my_ary に入れたいと思っております。(以下ソース) System.useCodepage = true; this.loadVariables("samp.txt"); this.onData = function() { my_ary = new Array(); my_ary = txt.split("\n"); }; stop(); デバッカで確認したところ“txt”の値は読み込めるのですが、 my_ary がいつも undefind になってしまいます。 何が原因なのかさっぱり分りません。 またこのソースでは、テキストを読み込むのに loadVariables を使っておりますが、LoadVars を使用して同じ事をした場合、my_ary 配列の値を LoadVarsオブジェクト名.onLoad = function(… 内以外から参照することは出来ますでしょうか? (例えば別のフレームやムービークリップなどから) 続けざまの質問で非常に恐縮ではありますが宜しくお願いいたします。 環境 OS:winXP Flash:MX2004

    • ベストアンサー
    • Flash
  • Flashで外部テキストをテキストフィールドオブジェクトに読み込む方法

    FlashMXを使用しています。 外部テキストファイルをまず loadVariablesで読み込みました。 そして、その読み込んだテキストファイルの内容を、 ダイナミックテキストボックスに入れて表示させたいと思っています。 その際、テキストボックスには変数名をつけるのではなく、インスタンス名をつけることでテキストフィールドオブジェクトとしています。 以下、そのスクリプトです。 mc_text_fieldという名前のテキストフィールドオブジェクトに外部テキストの変数v_textのストリングを読み込ませようとしていますが、うまく作動しません。 タイムラインのスクリプト this.loadVariables("gaibu.txt"); mc_text_field.text=v_text; 外部テキストgaibu.txtの中身 v_text=こんにちは。 宜しくお願いします。 また、LoadVarsを使っても読み込むことは可能なのでしょうか。どちらがお薦めでしょうか。宜しくお願い致します。

  • 外部テキストからURLを読み込む方法

    昨日、外部テキストの読み込みでお世話になったものです。 言われたとおりにやってみたところちゃんとテキストは読み込めました。 次はURLを読みこもうと思い、みなさんの質問の参考になりそうなものを手がかりにやってみたのですが、うまくいきませんでした。 テキストファイルは『flash.txt』 シンボルはMCで フレーム1のアクションスクリプトは ―――――――――――――――――― System.useCodepage = true; myLoadVars = new LoadVars(); myLoadVars.onLoad = function(Success) { if (Success) { _root.text1.text = this.menu1; _root.url1 =this.url1; } }; myLoadVars.load("flash.txt"); --------------------------------------- となっています。 これでシンボルMCに on (release) { getURL("_root.url1"); } とやっているのですが、飛びません。 また前回と同じようにこちらのミスが多いのかもしれませんが、 知っている方がいましたらよろしくお願いいたしますm(__)m

    • ベストアンサー
    • Flash
  • Flashの外部テキスト読み込みについて

    FlashのActionScriptに外部テキストから変数をに数値を格納したいのですが以下のようにしても出来ません。 教えてください。 System.useCodepage = true; loadVariables ("maisu.txt",_root); a = maisu; gotoAndStop(a); ________________maisu.txt____________________ maisu=5 Flash8を使っています。よろしくお願いします。

  • CSVファイル 読み込み後のsplit

    loadVarsを使い、CSVファイルを読み込んだ後で、 そのテキストを一度変数に落としてから splitしようとすると、何も返って来ません。 ----- var nText = String(bSuccess_text); gMessageList = nText.split("\r\n"); ←ここ ----- ※bSuccess_text、nText にテキストが来ているのは確認できています。 ※テキストはwindows改行であることを確認しています。 ※splitの値をカンマとか、別の物(1文字のもの)にしてみても同じく何も返って来ません・・。 ※変数に落とさない状態でもダメで、念のためにつけているstring() を外してもダメでした。 どなたかご存知の方がいらっしゃいましたら、よろしくお願いいたします。

    • ベストアンサー
    • Flash
  • 外部テキスト読み込み

    外部テキストを読み込んで そのテキストの中に、検索したい文字列が入っているかどうかが知りたいのですが、上手くいきません ソース System.useCodepage = true; my_lv = new LoadVars(); my_lv.onLoad = function() { find_num = my_lv.indexOF("検索したい文字列"); trace(find_num); }; my_lv.load("date.txt");

    • ベストアンサー
    • Flash
  • 外部テキストの読み込み

    Flash lite1.1で、外部テキストの読み込みが実現できません。 text.txtファイルをswfと同じフォルダに作成し、中身を「text=あいうえお」にしました。 swfのほうでダイナミックテキストで変数を「text」にし、同じシーンのボタンに下のスクリプトを記述 しました。 // on (press) { loadVariables("text.txt",0); } // よろしくお願いします。

    • ベストアンサー
    • Flash
  • CS3で外部テキストをHTMLにレタリングしたい。

    Flashに外部テキストを入れたいと思っているのですが、文字などは装飾したくHTMLでレタリングをしたいのですが、テキストをHTMLとしてレタリングするボタンを選択して以下のASを対応させるにはどうしたらよいでしょうか? 現状では、テキストをHTMLとしてレタリングするボタンを押しておいてもタグがすべて丸見えで通常のテキストになってしまいます。 インスタンスはaccessにしており変数はcontentsにしています。 外部ファイル名はaccess_contents.txtです。 var access_lv:LoadVars = new LoadVars(); System.useCodepage = true;//--この文の挿入位置もよく分りません、shift-jisで表示させたいです。 access_lv.onLoad = onText; access_lv.load("access_contents.txt"); function onText(success:Boolean) { if (success) { access.text =access_lv.contents; } else { access.text = "contents"; } } 環境 CS3 winXP AS2.0 flash9 以上、足りない点がある場合はご指摘ください。 よろしくお願いいたします。

    • ベストアンサー
    • Flash
  • ボタンを押すと外部テキスト表示

    初心者です。フラッシュはMXです。よろしくお願いします。 ボタンを押すと外部のテキストをテキストフィールドに表示する、というものを作りたいと思っています。過去の記事を検索して、私なりに組み立ててみました。 外部テキストファイル名はphoto01.txtです。読み込みたいテキストはtxt01_1です。 まず、メインにダイナミックテキスト、複数行、変数comentを用意しました。 ボタンは、メインにあるムービークリップthumbnailsの中にあるボタンに、 on (release) { _parent.coment = txt01_1; } というアクションを書きました。 そしてメインのフレームには System.useCodepage = true; this.loadVariables("photo01.txt"); というアクションを書きました。 プレビューしてボタンを押してみたらundefinedと出てしまいました。 意味も全くわからないまま拾い集めて組み立ててみたので、何が悪いかもわかりません。 どなたかぜひ教えてください。 どうぞよろしくお願いします。

    • ベストアンサー
    • Flash

専門家に質問してみよう