- ベストアンサー
外部テキストをsplitで分割する方法と注意点
- 外部テキストを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で分割することで、テキストの特定の行を取得したり、情報を整理することができます。
- みんなの回答 (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 ] → □□□ となります。 長くなってすみませんでした。 不明な点がありましたら、補足してください。
お礼
御返事遅くなってしまってすみません。 丁寧にありがとうございます! 無事解決いたしました。