ColdFusion特定于区域设置的货币输入,格式使用逗号(即法国-加拿大222,22$)

ColdFusion特定于区域设置的货币输入,格式使用逗号(即法国-加拿大222,22$),coldfusion,locale,currency,comma,french,Coldfusion,Locale,Currency,Comma,French,是否有更简单/更短的方法将货币输入的最后一个逗号转换为十进制 输入看起来像2000,99或2000,99 MySQL希望它们看起来像2000.99 <cfform action="commatest.cfm?gotime" onsubmit="commatest.cfm" method="post" name="waiv"> <cfinput type="text" name="commer"> <input type="submit" style="width:1

是否有更简单/更短的方法将货币输入的最后一个逗号转换为十进制

输入看起来像2000,99或2000,99

MySQL希望它们看起来像2000.99

<cfform action="commatest.cfm?gotime" onsubmit="commatest.cfm" method="post" name="waiv">
<cfinput type="text" name="commer">
<input type="submit" style="width:180px;" value="convertme" class="hide button">
</cfform>

<cfif isdefined("gotime")>

<!--- START SCRIPT --->
<cfset formentry = FORM.commer>
<cfset howlong = #len(formentry)#>

<cfif howlong GT 3>
<cfset leftlen = howlong - 3>
<cfset rside = #right(formentry, 3)#>
<cfset rside = ReReplace(rside,"[,]",".", "ALL")>
<cfset lside = #left(FORM.commer, leftlen)#>
<cfset lside = ReReplaceNoCase(lside,"[-$A-Z,]","", "ALL")>
<cfset lside = reReplace(lside, "[[:space:]]", "", "ALL") />
<cfset newb = #lside# & #rside#>

<!--- OUTPUT TO DATABASE (or webpage in this case) --->
<cfoutput> 
<h1>#newb# (number? #IsNumeric(newb)#)</h1>
</cfoutput>

<cfelse>

<cfoutput>
<h1>#formentry# (number? #IsNumeric(formentry)#)</h1>
</cfoutput>

</cfif>
</cfif>

像往常一样,有几种不同的方法可以做到这一点。我可能会这样做:

<cfscript>
source1 = '2 000,99';
source2 = '2,000,99';

// remove ALL commas and spaces
example1 = REReplace(source1,"[\s,]","","all");
example2 = REReplace(source2,"[\s,]","","all");

// insert a decimal before the last two digits
example1 = Insert(".",example1,(Len(example1)-2));
example2 = Insert(".",example2,(Len(example2)-2));

writeOutput(source1 & " = " & example1);
writeOutput("<br>");
writeOutput(source2 & " = " & example2);
</cfscript>
当然,这假设最后两位数字总是在小数点之后


.

您可能认为CF会有一个内置函数,用于将数字|日期从格式X转换为格式Y…:编辑@scott7ree-2000,99实际有效吗?我不认为您可以同时使用十进制分隔符和分组分隔符…ColdFusion有NumberFormat和DollarFormat,但这些示例在输入或输出端并不正常。编辑好,它们在某些区域设置的约定中应该是正常的;-第一个例子根据,即空格组或千位分隔符和逗号-小数分隔符lsparsenumber2000,99,fr_-CA,实际上是有效的。我不太熟悉fr_-CA的所有约定,但第二个例子对我来说似乎是错误的,即两个分隔符都使用逗号。在大多数地区,这两个字符是不同的。@Leigh您可能会认为CF会有…-我知道你不是新来的-
2 000,99 = 2000.99
2,000,99 = 2000.99