トップ > Action Script 3.0 > AS3 の正規表現を利用して数値に 3 桁ごとカンマを付加

AS3 の正規表現を利用して数値に 3 桁ごとカンマを付加

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 の正規表現を利用してやろうと思ったのが、実はそんなに正規表現は詳しくはない(汗

ということで、いつものようにネットで調べてみると、

数値を3桁毎のカンマ区切り形式に変換

上記のように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

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

コメント:0

コメント投稿

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

この情報を記憶する

トップ > Action Script 3.0 > AS3 の正規表現を利用して数値に 3 桁ごとカンマを付加

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

このページの先頭へ戻る