将空字符串转换为整数

ace*_*man 2 string coldfusion integer

目前,我的应用程序显示此错误消息:

"值''无法转换为数字."

这并不让我感到惊讶.刚刚添加了变量,因此对于在创建新字段之前使用该应用程序的任何人,该变量都是空字符串.

<td><cfif studentRecruitComments neq "">
        <a href="javascript: showContent('#studentRecruitComments#')">
            #studentRecruit#
        </a>
     <cfelse>
         #studentRecruit#
     </cfif>
</td>
<cfset tstudentRecruit = tstudentRecruit + studentRecruit>
Run Code Online (Sandbox Code Playgroud)

最后的数学是一个统计系统.变量tstudentRecruit在此行之前也设置为0,因此它肯定位于studentRecruit变量中.将空字符串转换为整数的正确方法是什么?这里有什么明显的错误吗?

And*_*aus 6

您可以简单地使用val()函数,该函数返回数字或转换失败时返回零.因此,您无需检查您的变量是否为数字.

<cfset tstudentRecruit = tstudentRecruit + val(studentRecruit)>
Run Code Online (Sandbox Code Playgroud)

  • 您必须小心推荐像+ =这样的语法,因为它相对较新并且CF版本没有在任何地方指示. (2认同)

Mar*_*ona 5

我稍微改了一下代码:

<td>
    <cfif NOT Len(trim(studentRecruitComments))>
        <a href="javascript: showContent('#studentRecruitComments#')">
            #studentRecruit#
        </a>
     <cfelse>
         #studentRecruit#
     </cfif>
</td>
<cfif NOT isNumeric(studentRecruit)>
    <cfset studentRecruit = 0>
</cfif>
<cfset tstudentRecruit = tstudentRecruit + studentRecruit>
Run Code Online (Sandbox Code Playgroud)

我在这里做的事很少:

首先,更改cfif studentRecruitComments neq""以实际检查字符串的长度,因为选择检查它是否为空.我;添加修剪以删除可能存在的任何空白空间.

然后我检查变量studentRecruit是否为数字,如果不是,我将其设置为0,这样,您的代码就不会失败.

显然我并不真正了解您的代码的上下文,因为我认为它可以进一步改进.

但是,使用我的代码段会导致错误消失.

HTH