AS3 で 継承 のサンプルスクリプト*1を使って 3桁ずつコンマをつける 処理を考えた メモ
[numberFormatter.fla] , [numberformatter.as] <- [csNumberFormatter.as]
//numberFormatter.fla var myCsNumberFormatter:csNumberFormatter = new csNumberFormatter(12); trace (myCsNumberFormatter.format(123456789)); //結果 000,123,456,789
//numberFormatter.as //任意の数列を任意の桁数で出力 package{ public class numberFormatter { public var keta:Number public function numberFormatter(ketaNum:Number) //コンストラクタ { keta = ketaNum; } public function format(value:Number) : String //頭に0を足して要求された桁数を満たす { var str:String = "" + value ; while(str.length < keta) str = "0" + str; return str; } } }
//csNumberFormatter.as //3桁ずつ","を加える拡張 package{ public class csNumberFormatter extends numberFormatter { public function csNumberFormatter(ketaNum:Number) //コンストラクタ { super(ketaNum); } override public function format(value:Number) : String //3桁づつ","を入れる { var str:String = super.format(value); var str2:String = ""; for (var i:int = 0; i < str.length; i++) { if (i % 3 == 0 && i != 0) { str2 = str.charAt((str.length-1) - i) + "," + str2; } else { str2 = str.charAt((str.length-1) - i) + str2; } } return str2; } } }
正規表現を使わない場合、これよりスマートに書くにはどうすればいいのか。
正規表現だとJavaScriptで数字3桁ごとにコンマを打つ|JavaScriptプログラムメモ|プログラムメモこんな感じなのかな。