0

我有一个带回结果的电子表格查询。负数的格式为 ([$$123.12]),正数的格式为 ("$$123.12")。

在插入数据库之前,我需要将负数格式化为 -123.12,将正数格式化为 123.12。我需要使用什么类型的正则表达式来做到这一点?或者,我可以使用 ColdFusion 的Replace()功能吗?如果可以,如何使用?

4

2 回答 2

2

我们创建了 xList 作为变量的持有者,以模拟循环查询。

假设负数将始终包含“[”并且正数没有括号,我们将在列表中循环并检查“[”以格式化负数,然后为没有括号的值格式化正数。

<cfset xlist = '([$$123.12]),("$$123.12")'>


<cfloop list="#xlist#" index="x">       

    <cfif FindNoCase("[", x )>
        <cfset xVal = "-" & rereplaceNoCase(x,"[^0-9.]","","all" )>
    <cfelse>    
        <cfset xVal = rereplaceNoCase(x,"[^0-9.]","","all" )>
    </cfif> 

    <cfdump var="#xVal#"><br>
</cfloop>
于 2016-03-02T13:56:09.590 回答
0

这是我做类似事情时稍作修改的版本。基本上,我将括号视为负号,并删除其他不相关的字符,例如$. 我不清楚括号是否是您答案的一部分,在这种情况下,也需要去掉括号。

<cffunction name="launderMoney">
    <cfargument name="value">

    <cfset var multiplier = 1>
    <cfset arguments.value = Replace(trim(arguments.value), '"', "", "all")>
    <cfif Find("[", arguments.value)>
        <cfset multiplier = -1>
        <cfset arguments.value = Replace(Replace(arguments.value, "[", "", "all"), "]", "", "all")>
    </cfif>

    <cfset var temp = Trim(Replace(Replace(trim(arguments.value), "$", "", "all"), ",", "", "all"))>
    <cfif isNumeric(temp)>
        <cfset temp *= multiplier>
    </cfif>

    <cfreturn temp>
</cffunction>

<p>#LaunderMoney('"$$123.12"')#</p>

<p>#LaunderMoney('[$$123.12]')#</p>
于 2016-03-02T14:41:48.270 回答