我有一个电子表格查询带回结果。负数格式为([$$ 123.12]),正数格式化为(“$$ 123.12”)。
在插入数据库之前,我需要将负数格式设置为-123.12,将正数格式设置为123.12。我需要使用什么类型的正则表达式?或者,我可以使用ColdFusion的Replace()
函数..如果是,如何使用?
答案 0 :(得分: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>
答案 1 :(得分: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>