AS2 ObjectDumperとCSVを読み込んだときの改行コード

2008/08/4

こんにちは。今回はAS2のtipsを2つほど。

Objectをtraceすると[objcct object]みたいになって、中身が見られません。それで、便利ツールがあります。
詳しくは、下記アドレスを参照のこと。情報ありがとうございます。
ObjectDumper.toString()メソッド(FumioNonaka.com)
ObjectDumperでオブジェクトの内容も丸見え。(_level0.CUPPY)
[AS3.0]ObjectDumperを使いたい!~ボクのデバッグ環境(TECH Matari)

あと、もうひとつはCSVを読み込んだときの改行コードについて。
私の端末環境だけによるかもしれないので、CSVを作ったExcelについて書いておくと、
Win XP Office Excel 2007
です。これで、Excel形式のものから別名でCSVを保存しました。

書き出したCSVデータはテキストエディタで開くと改行コードがCR+LFとなっています。
なので、CSVデータをflaにとりこんだあとに、配列などに加工する際には「rn」で区切ればよいと思います。

それで、ここからがポイントで、Excel上で1つのセル内に改行がある場合があります。「Alt + Enter」でできる、セル内改行です。こいつの改行コードは、「rn」じゃなくて、「n」でやるとうまく区切れました。ひょっとすると、最初に一行ずつに切り分けるため一度「rn」で区切ったあとのデータをさらに処理しているためにそうなるのかもしれません。

それから、セル内改行がある場合に書きだされたCSVデータをみると、該当セルは文頭・文末が「”」ではさまれています。なので、セルの文字のみをとりだすときは、
strが該当セルの文字データだとすると

str = str.substr(1, str.length - 2);

とかやっておくとできますね。

最後に、よくわかんない形式でデータをもつCSVローダーです。2次元配列とかで持てよという感じかもしれませんが、この方がなにかと都合がよかったんで。

AS2

class CSVLoader
{
  private var csvObj:Object;

  public function CSVLoader()
  {
    System.useCodepage = true;
    loadCSV();
  }

  private function loadCSV():Void
  {
    var self:CSVLoader= this;
    var my_lv:LoadVars = new LoadVars();
    //CSVファイルへのパス
    var path:String = "./csv/sample.csv";

    //onLoadじゃなくてonDataを使う
    my_lv.onData = function(src:String) {
      if (src == undefined)
      {
        trace("Error loading content.");
      }
      else
      {
        self.onCSVLoadComplete(src);
      }
    };
    my_lv.load(path);
  }

  private function onCSVLoadComplete(src:String):Void
  {
    var onelineArray:Array; //1行ずつに分けたデータ
    var selArray:Array; //1行をさらに各セルごとに分けたデータ
    var tempObj:Object;
    var i:Number;
    var len:Number;
    csvObj = new Object();
    onelineArray = src.split("rn");
    len = onelineArray.length;
    for (i = 0; i < len; i++)
    {
      selArray = onelineArray[i].toString().split(",");
      tempObj = new Object();

      //ここから各セル情報
      tempObj.sel1 = selArray[1];
      tempObj.sel2 = selArray[2];
      tempObj.sel3 = selArray[3];

      //セル1をキーにもち値がtempObjのもの
      csvObj[selArray[0]] = tempObj;
    }
  }
}
LINEで送る
Pocket

自作iPhoneアプリ 好評発売中!
フォルメモ - シンプルなフォルダつきメモ帳
ジッピー電卓 - 消費税や割引もサクサク計算!

ページトップへ戻る