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 に答える