トップ > Action Script 3.0 > AS3 で CSV データをパースする(数値に「,」があるやつに対応)

AS3 で CSV データをパースする(数値に「,」があるやつに対応)

Flash から CSV データを読み込んで処理する機会があったりして、そんな時は、ググってみりゃサンプルソースがたんまりと発見できたりする。

が。

今回、CSV データの中に「価格」という項目があり、値段に「,(カンマ)」が付いていたりする(汗

この「,」が悪さをするんですよ…。

区切りたくないところで区切ってしまう。

ということで、先のサイトを参考にしつつ、価格の「,」をエスケープする処理を追加することに。
なんかの役に立つかなと思いソースをメモ。

CSV ダミーデータ

CSV データ


名前,色,値段,内容
りんご,赤,"1,000",美味しい
みかん,オレンジ,500,ビタミンC
さくらんぼ,赤,"2,000",うまい
レモン,赤,"1,500","すっぱい"
スイカ,緑,"2,500",夏!
メロン,緑,"5,000",高級
いちご,赤,"2,500",かわいい

こちらのダミーデータを読み込むサンプル。
見て分かるように数値に「,」が含んでいるデータ。

ソース


package {
	
	//クラス
	import flash.display.Sprite;
	import flash.events.Event;
	import flash.net.URLRequest;
	import flash.net.URLLoader;
	
	public class Main extends Sprite {
			
		//コンストラクタ
		public function Main() {
			//URLLoader作成
			var csvUrl = new URLRequest("data.csv");
			var csvLoader:URLLoader = new URLLoader(csvUrl);
			csvLoader.load(csvUrl);
			//イベント設定
			csvLoader.addEventListener(Event.COMPLETE, csvLoaderComplete);
		}
		
		//読み込み完了
		function csvLoaderComplete(event:Event) {
			//データを格納
			var csvData:String = event.target.data;
			
			//出力
			//trace(csvData);
			
			//CSVパース
			var csvArr:Array = new Array();
			csvArr = parseCSV(csvData);
			
			//出力
			var n:uint = csvArr.length;
			for (var i:uint = 0; i < n; i++) {
				trace(csvArr[i]["名前"]);
				trace(csvArr[i]["色"]);
				trace(csvArr[i]["値段"]);
				trace(csvArr[i]["内容"]);
			}
		}
		
		//パース&多重配列化
		function parseCSV(str:String):Array {
			//CSVの配列
			var arr:Array = new Array();
			//改行コードをすべて「\n」に
			str = (str.split("\r\n")).join("\n");
			str = (str.split("\r")).join("\n");
			//改行ごとに区切る
			var theFileArray:Array = str.split("\n");
			//最終行が空白の場合は削除
			if (theFileArray[theFileArray.length - 1] == "") theFileArray.pop();
			//項目名
			var theFieldNames:Array = removeWQuotes(theFileArray[0]).split(",");
			//項目数
			var numberOfFields:uint = theFieldNames.length;
			//項目処理
			for(var i:uint=0; i

上記の trace 出力結果


りんご
赤
1,000
美味しい
みかん
オレンジ
500
ビタミンC
さくらんぼ
赤
2,000
うまい
レモン
赤
1,500
すっぱい
スイカ
緑
2,500
夏!
メロン
緑
5,000
高級
いちご
赤
2,500
かわいい

はい!
数値に「,」が含んでいても、きれいにパース出来ました!

この記事をブックマークしておく

コメント:0

コメント投稿

コメントを表示する前にこのブログのオーナーの承認が必要になることがあります。

この情報を記憶する

トップ > Action Script 3.0 > AS3 で CSV データをパースする(数値に「,」があるやつに対応)

記事検索
カテゴリ
RSSフィード

このページの先頭へ戻る