特段の理由が無い限り、データの形は汎用的な方が後々楽。例えひと手間かかろうとも。
そんなわけでCSVをパースしてみた。
CSV Parser – wonderfl build flash online
要の部分は次。参考ページのJSをほぼ型指定しただけ。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 |
/** * [JavaScript][Perl] 続・正規表現を使ったCSVパーサ / LiosK-free Blog * http://liosk.blog103.fc2.com/blog-entry-75.html * @param text * @param delim * @param ' * @return */ private function parseCSV(text:String, delim:String = ','):Array { var tokenizer:RegExp = new RegExp(delim + '|\r?\n|[^' + delim + '"\r\n][^' + delim + '\r\n]*|"(?:[^"]|"")*"', 'g'); var record:int = 0; var field:int = 0; var data:Array = [[]]; var qq:RegExp = /""/g; text.replace(/\r?\n$/, '').replace(tokenizer, function(token:*):* { switch (token) { case delim: data[record][++field] = ''; break; case '\n': case '\r\n': data[++record] = ['']; field = 0; break; default: data[record][field] = (token.charAt(0) != '"') ? token : token.slice(1, -1).replace(qq, '"'); } }); return data; } |