- 2008-08-27 (水)
- Action Script 3.0
AS3 からは正規表現が使えるようになったことを、すっかり忘れていた…(汗
せっかくある機能なんで、基本だけでも抑えておかないと。。。
とりあえず、AS3 で正規表現を利用する場合は、こんな感じとなる。
ソース
//文字
var date:String = "20080827";
//正規表現
var reg:RegExp = /(\d{4})(\d{2})(\d{2})/;
//検索
var arr1:Array = reg.exec(date);
var arr2:Array = date.match(reg);
//出力
trace(arr1);
trace(arr2);
※exec() でも match() でも同じ結果を得られる。
上記ソースの trace 出力結果
20080827,2008,08,27
20080827,2008,08,27
このように日付を切り分けで取得するような文字の処理が超簡単。
今度はちょっと実践的な感じで、数値に 3 桁ごとカンマを付加する処理を正規表現でチャレンジしてみようかと思う。
実はちょっと前に案件でこの処理を組み込んだんだけども、その時は、AS2 だったため、
上記サイトのソースを参考にさせてもらったりした。
ただ、見て分かるように、1文字ずつ処理をかけていく感じなんで、意外と複雑でソースが長い…。
で、この処理を AS3 の正規表現を利用してやろうと思ったのが、実はそんなに正規表現は詳しくはない(汗
ということで、いつものようにネットで調べてみると、
上記のようにPHP処理で良いサンプルを見つけた。この正規表現を参考にさせてもらい AS3 に適用させてみる。
ソース
//3桁ごとにカンマを付加する正規表現
var pattern:RegExp = /(\d)(?=(\d{3})+(?!\d))/g;
//数値
var num1:String = "12345678901234567890";
var num2:String = "123";
var num3:String = "1234";
var num4:String = "12345";
var num5:String = "123456";
var num6:String = "1234567";
//出力
trace(num1.replace(pattern, "$1,"));
trace(num2.replace(pattern, "$1,"));
trace(num3.replace(pattern, "$1,"));
trace(num4.replace(pattern, "$1,"));
trace(num5.replace(pattern, "$1,"));
trace(num6.replace(pattern, "$1,"));
上記ソースの trace 出力結果
12,345,678,901,234,567,890
123
1,234
12,345
123,456
1,234,567
検索置換を行う場合は、replace() で処理が可能みたい。
常々、AS は文字の整形処理に関して弱いな、とか思っていたけど、正規表現が利用できることで、わずか数行の処理で目的が達成できるようになった。すげー楽。すげー感動。
しかし、あとは、きちんと正規表現を勉強することが課題…(汗
ココが最も重要で最も高い壁となりそう…orz
- 次の記事: AS3 を振り返る
- 前の記事: AS3 で CSV データをパースする(数値に「,」があるやつに対応)
コメント:0
トラックバック:0
- この記事のトラックバックURL
- http://god.xsrv.jp/__mt/mt-tb.cgi/1340
- トラックバックを受ける記事
- AS3 の正規表現を利用して数値に 3 桁ごとカンマを付加 from 1ka2ka.com