• ベストアンサー

AS3.0 外部ファイルの拡張子を正規表現で調べたい

AS3.0 外部ファイルの拡張子を正規表現で調べたい 外部jpgや外部swfを読み込む際、拡張子を正規表現で調べる方法はありますか? また、substrなどを使うより早いんでしょうか。

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

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

すいません、今頃なんですが めっちゃまちがってました #1のgetJpgList2のほう 書き直しが中途半端になってました 全然正規表現のほうが遅かったです 10倍ぐらい遅かったです ファジーなデータあつかってるんだから そりゃ重くなるはずですよね 後ろ3文字抜き出して調べるだけと 同じなんておかしいですよね ごめんなさい

tkmkok
質問者

お礼

検証ありがとうございました。後ろ3文字抜き出す方法の方がまだ早いという結論でしょうか。しかしJPGとSWFで別々にロード処理を書くというのが、どうにも面倒に感じます。ましてや後ろ3文字抜き出す方法も何だかナンセンスな気もしますよね・・・。う~ん。

その他の回答 (1)

回答No.1

いまいち何がしたいのかよくわからないんですが それは例えばXMLでURLの一覧を取得するのはいいけど そのURLの一覧がjpgファイルもあるしswfファイルもある っていうような状況なわけですか? とりあえずURLの配列を処理するとして 下のようなコード書いてみて 正則表現とsubstr比較してみましたが 結果は両者とも200msec前後で そんなに変わりませんでした 30万個やって差がわからないような程度なので 好きな方でやればいいと思います var fileList=makeFileList(300000) var t=getTimer() //ここでどっちか選択 var jpgList=getJpgList1(fileList) //var jpgList=getJpgList2(fileList) trace("JPGファイル数"+jpgList.length) trace(getTimer()-t) function makeFileList(n:uint):Array{ var rtn:Array=new Array() for(var i=0;i<n;i++){ rtn.push("folder/testfile"+n+((Math.random()>1/2)?".swf":".jpg")) } return rtn } function getJpgList1(list:Array):Array{ var rtn:Array=new Array() for(var i=0;i<list.length;i++){ if(list[i].substr(-3)=="jpg")rtn.push(list[i]) } return rtn } function getJpgList2(list:Array):Array{ var rtn:Array=new Array() var reg:RegExp=new RegExp(".*jpg$") for(var i=0;i<list.length;i++){ if(list[i].substr(-3)=="jpg")rtn.push(list[i]) } return rtn } ちゃんと拡張子が付いてるのが前提なら substr使うにしても正則表現使うにしても 最後の3文字を調べるのが一番簡単かと思います

tkmkok
質問者

お礼

サンプルありがとうございます。 >一覧がjpgファイルもあるしswfファイルもある ズバリそういうケースです。 よくあるトップページ上部にあるようなスライドトピックス形式のものです。 AS2.0まではmovieCliploaderなどで読み込み元がjpgだろうがswfだろうが、 あまり意識せずに処理できましたがAS3.0ではそうはいきませんよね???(←これ勘違い!?汗) jpgの場合とswfの場合でロードに関する処理の分岐が必要になると思い質問しました。 でも考えてみると面倒な方法ですよね…。 皆さんどうしてるんでしょうか。

関連するQ&A