如何在CF中处理逗号分隔的小数和浮点数?

时间:2009-07-19 11:22:34

标签: coldfusion validation csv

我必须将表单值验证为整数。

我尝试过这样的事情:

<cfloop collection="#form#">
 <cfif form.value eq int(form.value)>
  #form.value# is an integer
 </cfif>
</cfloop>

只要用户不输入逗号作为小数分隔符,它就可以正常工作,这是在德国这样做的默认方式。

我必须使用CF MX 6.1。

3 个答案:

答案 0 :(得分:4)

查看可用的国际函数也可能有所帮助。例如LSParseNumber()

答案 1 :(得分:1)

如果您愿意,您可以先对输入进行脱敏。

<cfset var comma = ",">
<cfset var period = ".">
<cfset form.value = replace(form.value, comma, period, "all")>

但是,如果您只需要验证字段是否为整数,为什么不查看CFLib.org - IsInt

<cfscript>
/**
* Checks to see if a var is an integer.
* version 1.1 - mod by Raymond Camden
*
* @param varToCheck      Value you want to validate as an integer.
* @return Returns a Boolean.
* @author Nathan Dintenfass (nathan@changemedia.com)
* @version 1.1, April 10, 2002
*/
function isInt(varToCheck){
return isNumeric(varToCheck) and round(varToCheck) is vartoCheck;
}
</cfscript>

答案 2 :(得分:1)

与Al Everett一样,我建议使用特定于语言环境的功能:

<!--- actually *setting* the desired locale is mandatory for this to work --->
<cfset SetLocale("German (Standard)")>

<cfif CGI.REQUEST_METHOD eq "POST">
  <!--- loop the FieldNames list so only real posted values are handled --->
  <cfloop list="#FORM.FieldNames#" index="FieldName">
    <cfif LSIsNumeric(FORM[FieldName])>
      <cfset num = LSParseNumber(FORM[FieldName])>
      <!--- do stuff with #num# --->
    </cfif>
  </cfloop>
</cfif>