我正在ColdFusion购物车中做一些javascript工作,我需要能够在js中格式化一些数字,这些数字将模仿CF中的LScurrencyFormat()。
目前,我们使用格式化字符串的第一个字符(左,1),但这不适用于在数字之后出现的日元或欧元等货币,更不用说任何多字符货币符号了。
根据当前的CF语言环境,我需要找到的是
在这里,我可以运行自己的js格式,使格式化的数字在page.In php上按预期的方式显示出来,我们可以使用localeconv()来获取这些值.我怎样才能在CF里找到它们?
发布于 2012-01-27 00:30:18
我不知道任何内置的功能。但是,您可以从java获得前两项。至于第三个,我所见过的最接近的建议是解析 局部数模式和检测货币符号(即\u00A4 )的位置。注意:它只是一个掩码占位符。它是,而不是,与"$“或"£”等实际货币符号不同。
编辑:,如注释中所讨论的,getLocale()返回一些用户友好的名称,遗憾的是它与java的名称不太一致。获取当前request的java语言环境对象的最简单方法是使用getPageContext().getResponse().getLocale()。
<cfscript>
// Get the current locale as a java object
javaLocale = getPageContext().getResponse().getLocale();
// get numeric settings for that locale
currency = createObject("java", "java.text.DecimalFormat").getCurrencyInstance(javaLocale);
symbols = currency.getDecimalFormatSymbols();
// 164 => decimal code point for currency sign
currencyPattern = currency.toLocalizedPattern();
result.hasTrailingCurrencySymbol = currencyPattern.indexOf(javacast("int", 164)) > 0;
result.currencySymbol = symbols.getCurrencySymbol();
result.decimalSeparator= symbols.getDecimalSeparator();
WriteDump(result);
</cfscript>发布于 2012-01-30 00:16:45
getLocale()返回旧的cf5样式区域设置“名称”,但只返回cf5支持的区域设置。如果你抛出受支持的语言环境(Server.Coldfusion.SupportedLocales),你会看到愚蠢的老cf5风格的语言环境名称以及核心的java语言环境if (即“中文(中国)”和"zh_CN")。如果您的地区不是cf5支持的区域设置之一,那么您应该看到核心的java地区ID (即泰国的th_TH )。看见
http://cfbugs.adobe.com/cfbugreport/flexbugui/cfbugtracker/main.html#bugId=82474
作为对利的回答的一个小改动,你也应该关注货币/地区的分数位。例如,在通常的实践中,你不能拥有日元的一部分(即1.1不太犹太)。您可以从货币类的getDefaultFractionDigits()方法获得该信息:
result.fractionDigits=currency.getDefaultFractionDigits();https://stackoverflow.com/questions/9027221
复制相似问题