致谢:我非常感谢 STACKOVERFLOW 中为这个 Esp 发表的许多帖子。java中的数字格式使用Lakh格式而不是百万格式
在新的 Flex AIR 应用程序 1 中,我做了RIGHT ALIGN + 印度逗号分隔
这是通过自定义项目渲染完成的;需要大量的搜索和代码工作改编自 Java,但 Java、C# 和 AS3 非常相似,移植起来简直是小菜一碟
在印度以外,没有人喜欢十万和千万;其他人对百万亿感到满意,但我们印度人认为十万和梦想千万;并找到百万(100 万)thora confushingh
途中我也做了 RIGHT ALIGN 一个非常普遍的需求
弹性标记
<s:GridColumn id="dmbtr" headerText="Amt (INR)" dataField="dmbtr" >
<s:itemRenderer>
<fx:Component>
<s:GridItemRenderer>
<s:Label id="MyText" top="9" left="7" alpha="1"
text="{leftPad(data.dmbtr,10)}"
fontFamily="Lucida Console" textAlign="right"/>
</s:GridItemRenderer>
</fx:Component>
</s:itemRenderer>
</s:GridColumn>
AS3 功能
public function leftPad(inp:Number,size:int):String {
var lstr:String=Math.round(inp).toString();
// LAKHS CRORES 印度风格
var pat3:RegExp = /(\d+)(\d{3})$/;
lstr = lstr.replace(pat3, "$1,$2");
var pat2:RegExp = /(\d+)(\d{2},.+)/;
var pat1:RegExp = /\d{3,},.+/;
while(lstr.match(pat1))
lstr = lstr.replace(pat2, "$1,$2");
// RIGHT ALIGN 部分
var strLen:int = lstr.length;
var padLen:int = size - strLen;
if (padLen <= 0)
return lstr;
var myspaces:String=" "; // 20 OK
return myspaces.substring(0,padLen)+lstr;
}
诀窍是左垫并使用固定宽度的字体
我的要求是最近的卢比
如果您需要小数(为 INR 计算),请使用 toFixed 方法 Number 并将 pat3 更改为
var pat3:RegExp = /(\d+)(\d{3}.*)$/;
右对齐部分在印度逗号之后